以编程方式更改自定义ListView项目

时间:2012-04-01 00:04:09

标签: android listview

我有一个包含三个项目的自定义列表视图。其中一个就像“将其添加到数据库”,当我点击它时,它会向数据库中插入一些东西。

我想要它做的是在执行插入后,将文本更改为“从数据库中删除”以及onClick方法调用方法来删除该记录而不是插入方法。 这可能吗?

这是我的代码:

final String[] opcs = new String[]{"Resultados", "Clasificación", text_fav};

      ArrayAdapter<String> aa = new ArrayAdapter<String>(this, R.layout.list_menutipo_item, opcs);
      m_list.setAdapter(aa);          
      m_list.setOnItemClickListener(new OnItemClickListener() {

          @Override
        public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {
                Intent newActivity = null;
                switch( position )
                {                  
                    case 0:  ...


                    case 2:  if (isConnected(m_context))
                     {
                        añadirFavorito();
                     }
                    break;  
                }
            }   
        });    

1 个答案:

答案 0 :(得分:1)

这绝对有可能。 onItemClick回调的view参数是您单击的视图,您只需更改该视图的内容即可。即view.setText("Delete this from the DB")

另外,您需要区分下一次单击是“将其添加到数据库”还是“从数据库中删除”,在此处进行字符串比较,如if("Delete this from the DB".equals(view.getText()))可能不是很好的做法,您可以在view.setTag(true)视图中设置一个标志,表示当前视图的内容是“从数据库中删除”。之后你可以使用view.getTag()取回标志进行比较。

Boolean flag = (Boolean)view.getTag();
if(flag == null || !flag) {
    view.setText("Delete this from the DB");
    flag = true;
    //... code to insert a record to DB
} else {
    view.setText("Insert this to the DB");
    flag = false;
    //... code to delete a record from DB
}
view.setTag(flag);