2

我正在创建一个应用程序,其中数据是从条形码扫描仪获取的,该扫描仪从 id 识别,并通过 Web 服务显示数据库中的详细信息。我目前正在使用具有文本视图和按钮的自定义列表,我想嵌入到文本视图中的数据正在正确显示...

我的问题是如何从单击按钮的列表中删除特定行。

这是自定义适配器代码。

 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 开发的新手。如果您需要更多详细信息,我可以更新问题或代码。请回复

4

4 回答 4

2

要刷新适配器,只需删除 ArrayList 的元素并调用

notifyDataSetChanged()

在您的适配器中。

我认为你应该看这个例子:

http://www.vogella.com/articles/AndroidListView/article.html

于 2013-09-09T12:10:26.243 回答
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 方法。

于 2013-09-09T12:03:17.300 回答
0

简单必须需要从列表中删除项目并调用函数 notifyDataSetChanged

 ImageButton dltbutton = (ImageButton) row.findViewById(R.id.removebtn);
        dltbutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                myModel.remove(position);
                notifyDataSetChanged();
            }
        });

在下面检查我的答案:-

https://stackoverflow.com/a/39243875/1733810

于 2016-08-31T10:01:46.727 回答
-2

最简单的方法是重新创建适配器。

public void onClick(View view){

   mItemsList.remove(numberToDelete);
   mListView.setAdapter(new MyCustomAdapter(this, mResId,mItemsList));
}
于 2013-09-09T12:08:44.683 回答