我有一个包含三个项目的自定义列表视图。其中一个就像“将其添加到数据库”,当我点击它时,它会向数据库中插入一些东西。
我想要它做的是在执行插入后,将文本更改为“从数据库中删除”以及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;
}
}
});
答案 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);