Android - 在按钮单击时从列表视图中删除一行

时间:2013-09-09 11:51:26

标签: android android-listview custom-adapter custom-lists

我正在创建一个应用程序,其中数据来自条形码扫描程序,该扫描程序从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开发的新手..如果你需要更多细节,我可以更新问题或代码。 请回复

4 个答案:

答案 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();
            }
        });

检查下面的答案: -

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

答案 3 :(得分:-2)

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

public void onClick(View view){

   mItemsList.remove(numberToDelete);
   mListView.setAdapter(new MyCustomAdapter(this, mResId,mItemsList));
}