android表格动态添加行,android – 动态地将自定义行添加到listview

通过引用这个,我创建了以下内容:

main.xml中

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/addBtn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="addItems"

android:text="Add New Item" />

android:id="@+id/list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:drawSelectorOnTop="false" />

MainActivity.java

public class MainActivity extends Activity {

ListView list;

ArrayList listItems = new ArrayList();

ArrayAdapter adapter;

int clickCounter = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

list = (ListView) findViewById(R.id.list);

adapter = new ArrayAdapter(this,

android.R.layout.simple_list_item_1, listItems);

list.setAdapter(adapter);

list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

String item = list.getItemAtPosition(position).toString();

Log.i("MainActivity", "Selected = " + item);

}

});

}

public void addItems(View v) {

listItems.add("Clicked : " + clickCounter++);

adapter.notifyDataSetChanged();

}

}

而且它运作完美.但是根据要求,我的每个listview行不仅仅是一个字符串.相反,它将是由存储在row.xml中的imageview和textview组成的视图集合.

现在我的疑问是:

>什么将替换adapter = new ArrayAdapter< String>(这,android.R.layout.simple_list_item_1,listItems); ?它是adapter = new ArrayAdapter< String>(this,R.layout.row,listItems); ??

>我如何参考每行的imageview和textview?如何设置和获取数据?如何识别他们的点击事件?

>是否必须使用适配器?或者我能逃脱它吗?

任何帮助赞赏.

解决方法:

But as per requirements, my each listview row won’t just be a single

string. Instead, it’ll be collection of views consisting of imageview

and textviews stored in row.xml.

=&GT您正在显示的ListView正在使用普通适配器.如果您希望项目包含多个视图,如Imageview,Textview或任何视图,则必须通过扩展BaseAdapter或ArrayAdapter来定义自定义适配器类.

What will replace adapter = new

ArrayAdapter(this,android.R.layout.simple_list_item_1,

listItems); ? Will it be adapter = new

ArrayAdapter(this,R.layout.row, listItems); ??

=&GT这里ArrayAdapter不起作用,因为你的行xml布局可能包含不同的视图,如ImageView,TextView,Button或任何其他小部件.所以我建议你定义自己的适配器类,你必须覆盖getView()方法.

How do I refer to imageview and textviews of each row? How do I set

and get data from them? How do I recognize their click events?

=&GT如上所述,一旦定义了自定义适配器类,就必须覆盖getView()方法,在该方法中可以找到行xml布局文件的任何视图,引用它并设置/显示所需的任何数据.

Is use of Adapter must? or can I get away with it?

=&GT是的必须,如果没有适配器,您将无法在GridView,ListView,Spinner,Gallery等数据绑定小部件中显示.

定义自定义适配器的示例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值