我正在创建一个应用程序,其中数据来自条形码扫描程序,该扫描程序从ID中识别,并通过Web服务显示数据库中的详细信息。我目前正在使用具有文本视图和按钮的自定义列表,我想要嵌入到textview中的数据正确显示...
我的问题是如何从按钮单击列表中删除列表中的特定行。
这是自定义适配器代码。
public class MyCustomAdapter extends ArrayAdapter<String>
{
public MyCustomAdapter(Context context, int textViewResourceId, ArrayList<String> items)
{
super(context, textViewResourceId, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = FusionMain.this.getLayoutInflater();
View row = inflater.inflate(R.layout.list_row, parent, false);
return row;
}
} // end MyCustomAdapter
我应该在自定义适配器中创建哪些其他功能?我是android开发的新手..如果你需要更多细节,我可以更新问题或代码。 请回复
答案 0 :(得分:2)
要刷新适配器,只需删除ArrayList的元素并调用
即可notifyDataSetChanged()
在适配器中。
我认为你应该看一下这个例子:
http://www.vogella.com/articles/AndroidListView/article.html
答案 1 :(得分:1)
适配器的主要思想是将ArrayList项传递给它,它们将显示在AdapterView上。
将为列表中当前显示的每个元素运行带位置参数的getView方法。滚动列表时,您将获得更多的getView()调用。 从getView方法中,您必须返回一个将在列表中显示的视图,但它必须已经填充了DATA! 例如:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = FusionMain.this.getLayoutInflater();
View row = inflater.inflate(R.layout.list_row, parent, false);
TextView myTextView = (TextView)row.findViewById(R.id.myTextviewId);
myTextView.setText(items.get(position));
return row;
}
如果要更改列表,则必须更改项目对象(例如,从此ArrayList中删除单个项目)
然后你必须使用myAdapter.notifyDatasetChanged()
方法。这将使您的AdapterView(例如ListView)再次更新并再次为所有可见位置调用getView方法。
答案 2 :(得分:1)
简单必须从列表中删除项目并调用函数notifyDataSetChanged
ImageButton dltbutton = (ImageButton) row.findViewById(R.id.removebtn);
dltbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myModel.remove(position);
notifyDataSetChanged();
}
});
检查下面的答案: -
答案 3 :(得分:-2)
最简单的方法是创建适配器。
public void onClick(View view){
mItemsList.remove(numberToDelete);
mListView.setAdapter(new MyCustomAdapter(this, mResId,mItemsList));
}