Android 列表视图和按钮
我设法创建了我的ListView,其中有大约10个项目,但那不过是一个列表而已。我正在考虑添加更多功能,但我不知道如何添加。我需要添加按钮旁边的每一个项目,这将被称为“查看更多”,然后一些更多的信息将显示有关该项目的点击。有人知道怎么做吗?在提问之前,请访问此页面,熟悉人们提问的方式Android 列表视图和按钮,android,listview,button,Android,Listview,Button,我设法创建了我的ListView,其中有大约10个项目,但那不过是一个列表而已。我正在考虑添加更多功能,但我不知道如何添加。我需要添加按钮旁边的每一个项目,这将被称为“查看更多”,然后一些更多的信息将显示有关该项目的点击。有人知道怎么做吗?在提问之前,请访问此页面,熟悉人们提问的方式链接: 我为你制作了一个简单的应用程序,它有一个包含五个项目的列表,每个项目都有一个名为“查看更多”的按钮。当用户触摸该按钮时,说明将在警报对话框中弹出 对于布局,我们有一个主布局,simpley只有一个listv
链接:
我为你制作了一个简单的应用程序,它有一个包含五个项目的列表,每个项目都有一个名为“查看更多”的按钮。当用户触摸该按钮时,说明将在警报对话框中弹出 对于布局,我们有一个主布局,simpley只有一个listview,没有其他内容。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView_MainItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
ArrayAdapter类代码:
public class MyListAdapter extends ArrayAdapter<ListProperty> {
private static List<ListProperty> Items;
private Activity context;
private LayoutInflater l_inflater;
public MyListAdapter(Activity context, int textViewResourceId,
List<ListProperty> Items) {
super(context, R.id.listView_MainItems, textViewResourceId, Items);
this.context = context;
this.Items = Items;
}
private class ViewHolder {
TextView txtTitle;
Button btnViewMore;
}
public ListProperty getItem(int position) {
return Items.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_main, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView
.findViewById(R.id.txtItemTitle);
holder.btnViewMore = (Button) convertView
.findViewById(R.id.btnViewMore);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final ListProperty property = (ListProperty) getItem(position);
holder.txtTitle.setText(property.getTitle());
holder.btnViewMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder msgBuilder = new Builder(context);
msgBuilder.setTitle(property.getTitle());
msgBuilder.setCancelable(false);
msgBuilder.setMessage(property.getDesc());
msgBuilder.setPositiveButton("Return", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog alertRING = msgBuilder.create();
alertRING.show();
}
});
return convertView;
}
}
公共类MyListAdapter扩展了ArrayAdapter{
私有静态列表项;
私人活动语境;
私人充气机;
公共MyListAdapter(活动上下文,int textViewResourceId,
(列表项目){
super(context,R.id.listView\u main项目,textViewResourceId,项目);
this.context=上下文;
这个。项目=项目;
}
私有类视窗持有者{
TextView-txtTitle;
按钮btnViewMore;
}
public ListProperty getItem(int位置){
返回项目。获取(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终持票人;
LayoutInflater充气器=上下文。getLayoutInflater();
if(convertView==null){
convertView=充气机。充气(R.layout.list_main,空);
holder=新的ViewHolder();
holder.txtTitle=(TextView)convertView
.findviewbyd(R.id.txtitle);
holder.btnViewMore=(按钮)convertView
.findViewById(R.id.btnViewMore);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
最终ListProperty属性=(ListProperty)getItem(位置);
holder.txtitle.setText(property.getTitle());
holder.btnViewMore.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
AlertDialog.Builder msgBuilder=新生成器(上下文);
msgBuilder.setTitle(property.getTitle());
msgBuilder.setCancelable(false);
msgBuilder.setMessage(property.getDesc());
msgBuilder.setPositiveButton(“Return”,newonClickListener()){
@凌驾
public void onClick(DialogInterface dialog,int which){
}
});
AlertDialog alertRING=msgBuilder.create();
alertRING.show();
}
});
返回视图;
}
}
我希望您得到了想要的。是否要在每个列表项中添加更多按钮?不需要添加任何按钮来显示该项的详细信息。只需处理onListItemClick()即可。选中此链接-如果需要自定义列表并在其中定义自己的UI,则可以实现自定义适配器类并将其与列表关联。有很多教程可以指导你完成这一过程。嘿,谢谢你的建议和你的辛勤工作,但我发现我可以点击你的onlistitemclick听众,从他们的位置我只是在创造新的活动。先生,你认为哪种方式更好?我很高兴我能帮上忙。如果你确切知道列表中有哪些项目,并且有特定数量的项目,那么只有列表项ClickListener可以完成这项工作,但是如果你想对列表有更多的控制权,而你不知道列表项的内容可能是什么,那么你必须制作自己的阵列来适应嘿,谢谢你的回复,我的列表中有10个特定的项目,我现在要做的是,每当单击一个项目时,我都会得到该项目的位置,我会开始一个新的活动来显示该项目的一些信息。非常感谢你的帮助。
public class MainActivity extends Activity {
private ListView lstMainItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lstMainItems = (ListView) findViewById(R.id.listView_MainItems);
fillList();
}
// This functions fills the list
private void fillList() {
ArrayList<ListProperty> ItemHolder = new ArrayList<ListProperty>();
ListProperty item0 = new ListProperty();
ListProperty item1 = new ListProperty();
ListProperty item2 = new ListProperty();
ListProperty item3 = new ListProperty();
ListProperty item4 = new ListProperty();
item0.setTitle("Item 1");
item0.setDesc("(1) some description places here...");
item1.setTitle("Item 2");
item1.setDesc("(2) some description places here...");
item2.setTitle("Item 3");
item2.setDesc("(3) some description places here...");
item3.setTitle("Item 4");
item3.setDesc("(4) some description places here...");
item4.setTitle("Item 5");
item4.setDesc("(5) some description places here...");
ItemHolder.add(item0);
ItemHolder.add(item1);
ItemHolder.add(item2);
ItemHolder.add(item3);
ItemHolder.add(item4);
MyListAdapter adapter = new MyListAdapter(MainActivity.this,
R.layout.list_main, ItemHolder);
lstMainItems.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
public class ListProperty {
// Getting and Setting Item Title
public void setTitle(String itemTitle) {
this.itemTitle = itemTitle;
}
// Getting Item Title
public String getTitle() {
return itemTitle;
}
// Setting Item Description
public void setDesc(String itemDesc) {
this.itemDesc = itemDesc;
}
// Getting Item Description
public String getDesc() {
return itemDesc;
}
// Defining Variables
private String itemTitle;
private String itemDesc;
}
public class MyListAdapter extends ArrayAdapter<ListProperty> {
private static List<ListProperty> Items;
private Activity context;
private LayoutInflater l_inflater;
public MyListAdapter(Activity context, int textViewResourceId,
List<ListProperty> Items) {
super(context, R.id.listView_MainItems, textViewResourceId, Items);
this.context = context;
this.Items = Items;
}
private class ViewHolder {
TextView txtTitle;
Button btnViewMore;
}
public ListProperty getItem(int position) {
return Items.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_main, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView
.findViewById(R.id.txtItemTitle);
holder.btnViewMore = (Button) convertView
.findViewById(R.id.btnViewMore);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final ListProperty property = (ListProperty) getItem(position);
holder.txtTitle.setText(property.getTitle());
holder.btnViewMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder msgBuilder = new Builder(context);
msgBuilder.setTitle(property.getTitle());
msgBuilder.setCancelable(false);
msgBuilder.setMessage(property.getDesc());
msgBuilder.setPositiveButton("Return", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog alertRING = msgBuilder.create();
alertRING.show();
}
});
return convertView;
}
}