[英]android: refresh listview on clicking a button in a list item
我有一个列表视图,可从数据库中检索标记为收藏夹的行,即在“收藏夹”列中具有布尔值1的行。 它有一个textview和一个按钮。 单击该按钮后,将从收藏夹中删除该特定项,即,数据库中的该行已更新,并且其收藏夹值设置为布尔值0。 但是我想在此之后刷新列表视图,以便特定的项目从列表视图中消失。 我尝试使用notifyDataSetChanged();
但它不起作用。 我该怎么做? 代码的相关部分粘贴在下面:
活动课:
public class ListActivity extends Activity{
public Cursor c;
public int lcid;
private ListView lView;
private ArrayList<ListItemNew> newList;
private ListNewAdapter mAdapterNew;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context context = getApplicationContext();
setContentView(R.layout.favs);
getActionBar().setDisplayHomeAsUpEnabled(true);
final DataBaseHelper db = new DataBaseHelper(context);
try {db.createDataBase();} catch (IOException e) {e.printStackTrace();}
db.openDataBase();
newList = new ArrayList<ListItemNew>();
c=db.getFavs();
prepareList();
db.close();
lView = (ListView) findViewById(R.id.listView1);
mAdapterNew = new ListNewAdapter(getApplicationContext(), newList);
lView.setAdapter(mAdapterNew);
lView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView, int position, long mylng) {
mAdapterNew.notifyDataSetChanged();
lView.setAdapter(mAdapterNew);
final Intent k = new Intent(ListActivity.this, MainActivity.class);
k.putExtra("id", x);
finish();
startActivity(k);
}
});
}
public void prepareList()
{
c.moveToFirst();
do{
newList.add(new ListItemNew(c.getString(0), c.getString(1)));
}while (c.moveToNext());
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
}
适配器类:
public class ListNewAdapter extends BaseAdapter {
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item_new, null);
}
TextView txtTitle = (TextView) convertView.findViewById(R.id.list_new_title);
txtTitle.setText(newListItems.get(position).getTitle());
Button imgBtn = (Button) convertView.findViewById(R.id.delete_btn);
//.......declarations etc
imgBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
AlertDialog.Builder alertbox = new AlertDialog.Builder(v.getRootView().getContext());
alertbox.setMessage("Are you sure you wanna remove this item from your favorites?");
alertbox.setTitle("Warning");
alertbox.setIcon(R.drawable.trn_03);
alertbox.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
final DataBaseHelper db = new DataBaseHelper(context);
try {db.createDataBase();} catch (IOException e) {e.printStackTrace();}
db.openDataBase();
final int newid = Integer.valueOf(id);
db.UpdateRemoveFav(newid);
db.close();
notifyDataSetChanged();
}
});
alertbox.setNegativeButton("No", null);
alertbox.show();
}
});
return convertView;
}
}
mAdapterNew = new ListNewAdapter(getApplicationContext(), newList);
lView.notifyDataSetChanged();
lView.setAdapter(mAdapterNew);
lView.setOnItemClickListener(new OnItemClickListener() {
lView.notifyDataSetChanged();
lView.setAdapter(mAdapterNew);
//go to another activity
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.