Java Android ListView:如何使用按钮单击添加行
我有一个列表视图。在它里面,每一行都有一条0:00的文字。但是现在,我在我的操作栏上添加了一个按钮,但是我被卡住了。我不知道如何让按钮创建一个新行,显示0:00Java Android ListView:如何使用按钮单击添加行,java,android,android-listview,add,buttonclick,Java,Android,Android Listview,Add,Buttonclick,我有一个列表视图。在它里面,每一行都有一条0:00的文字。但是现在,我在我的操作栏上添加了一个按钮,但是我被卡住了。我不知道如何让按钮创建一个新行,显示0:00 public class RowData { String title; public RowData(String title) { this.title = title; } } 这是一行数据的代码 public void onCreate(Bundle savedInstanc
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
这是一行数据的代码
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RowData rowdata_data[] = new RowData[]
{
new RowData("0:00")
};
RowdataAdapter adapter = new RowdataAdapter(this,
R.layout.listview_item_row, rowdata_data);
listView1.setAdapter(adapter);
listView1 = (ListView)findViewById(R.id.listView1);
}
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
这是我的RowData类:
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
那么,我应该如何实现一个按钮单击来添加另一行呢?
AdditionButton下:应为方法
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle presses on the action bar items
switch (item.getItemId())
{
case R.id.additionbutton:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
您需要创建一个可以更改的数据集,以便使数组成为类范围的变量,以便在需要时添加到其中
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
当您添加新行时,您需要通知适配器某些内容已更改,以便执行此操作
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
adapter.notifyDatasetChanged();
这将更新您的列表
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
我不知道如何让按钮创建新行
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
对于您当前的解决方案,这是不可能的(以高效的方式),因为您使用的是对象的静态数组-这意味着数组具有固定的大小(这意味着您假设该大小在运行时不会更改)
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
但你的目标“略有”不同。您希望在每次单击按钮后将对象数增加一个。这意味着您不知道可以有多少行(或者可以在运行时更改)
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
由于上述原因,您应该(必须)使用大小可变的动态数组。由于这个原因,您需要使用作为动态数组表示的数据源
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
基本算法:
- 创建零行的新列表(或者默认情况下,一次只能有一行) 开始)
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
onClick()
方法中使用创建的方法将新行添加到ListView中public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
解决方案:
如何初始化ListAdapter:
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}
// Activity-level variable scope
private List<RowData> items = new ArrayList<RowData>();
private RowdataAdapter adapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView1 = (ListView)findViewById(R.id.listView1);
// adding first item to List, it's optional step
items.add(new RowData("0:00"));
adapter = new RowdataAdapter(this, R.layout.listview_item_row, items);
listView1.setAdapter(adapter);
}
public void addRow(RowData newRow) {
// items represents List<RowData> in your Adapter class
this.items.add(newRow);
// sends request to update ListAdapter
notifyDataSetChanged();
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// add new row to Adapter
adapter.addRow(new RowData("0:00"));
}
});
希望我能帮你解决你的问题。是的,谢谢,这正是我要找的!非常感谢你不仅发了一些文字,而且我真的非常感谢你给我的解释,因为我知道它为什么会起作用!
public class RowData {
String title;
public RowData(String title) {
this.title = title;
}
}