【发布时间】:2017-04-22 10:59:22
【问题描述】:
我正在使用 firebase 开发一个笔记应用程序。正如您在第一个屏幕截图中看到的,我使用自定义列表视图来显示来自 firebase 数据库的所有数据。
之后我有一个 setOnItemLongClickListener 从列表视图中删除选定的项目。所以当我长按一个项目时,我有这个 AlertDialog 菜单。
所以,接下来我必须按“是”按钮并从 listView 中删除所选项目。
这是我的 setOnItemLongClickListener 代码
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(final AdapterView<?> parent, View view, final int position, long id) {
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setTitle("Delete List?");
dialogBuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialogBuilder.show();
return false;
}
});
这是 ListAdapter 类
public class ListAdapter extends ArrayAdapter<Post>{
public ListAdapter(Context context, int resource, List<Post> objects){
super(context, resource, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.item_row,parent,false);
}
TextView listName = (TextView) convertView.findViewById(R.id.item_title);
TextView date = (TextView) convertView.findViewById(R.id.item_date);
TextView body = (TextView) convertView.findViewById(R.id.item_body);
Post list = getItem(position);
listName.setText(list.getTitle());
date.setText(list.getDate());
body.setText(list.getBody());
//checkBox.setVisibility(View.GONE);
return convertView;
}
}
mDatabase.child(getUid()).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Post post = dataSnapshot.getValue(Post.class);
mAdapter.add(post);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这是我的 Firebase 数据库
问题是我无法获取特定长按项目的 id 来删除它。
例如,如果我长按第一项我想获取 id -KiFDsP6qOUAo6hw_ES0。任何人都可以帮助我如何做到这一点?
【问题讨论】:
-
你应该有模型类来存储不同ID的数据,然后使用该模型类来获取数据。你能显示你向适配器发送数据的代码吗?
标签: android listview firebase firebase-realtime-database