我正在使用一个带有事件的日历应用程序,我将它们保存在MyDatabaseHelpe中,事件按天显示在列表视图中,我的问题是,在onitemclicked中,我希望事件的数据显示在AlertDialog中,我使用CursorAdapter类,当我试图显示数据时,位置0的数据未显示,显示位置1的数据。
我已经尝试了许多方法的立场,可以适合在功能,我搜索了许多StackOverFlows(和更多的网站)的主题,以找到一个解决方案。
- 删除行功能工作正常,没有任何问题。
任何想法或方法都将是有益的!
'
单击时列表视图的方法
'私有void对话框单击项和删除(){
monthListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
View view1 = getLayoutInflater().inflate(R.layout.show_event_from_listview, null);
Object listItem = monthListView.getItemAtPosition(position).toString();
EventCursorAdapter EC = new EventCursorAdapter(MainActivity.this, myDB.readAllData());
Cursor cursor = EC.getCursor();
cursor.moveToPosition(position);
View view2 = EC.getView(position,view1,parent);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setView(view2).
setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String id_row = hourAdapter.getItem(position).getEvents().get(0).getId();
myDB.deleteOneRow(id_row);
AllEventsList.reloadActivity(MainActivity.this);
}
}).setNegativeButton("Exit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AllEventsList.reloadActivity(MainActivity.this);
}
});
builder.show();
}
});
}'
x一个一个一个一个x一个一个二个一个x一个一个三个一个
我尝试的另一种方法是
View view2 = EC.getView(position,view1,parent);
View view3 = monthListView.getChildAt(position - monthListView.getFirstVisiblePosition());
View view4 = EC.newView(EC.mContext,EC.mCursor,parent);
View view5=hourAdapter.getView(position,view1,parent);
更新日期:2022年12月27日
我注意到我的问题可能是因为我排序我的列表。
私有void setMonthAdapter(){小时适配器=新的小时适配器(获取应用程序上下文(),所有事件列表。小时事件列表来自数据库(获取应用程序上下文(),myDB));
hourAdapter.sort((o1, o2) -> o1.events.get(0).getDate().compareTo(o2.events.get(0).getDate()));
hourAdapter.sort((o1, o2) -> o1.events.get(0).getTime().compareTo(o2.events.get(0).getTime()));
monthListView.setAdapter(hourAdapter);
}
我可以检索值,但顺序错误,在我的列表视图中,我的事件是按时间和日期排序的,当我单击位置0中的项目时,它会显示位置1中的项目,反之亦然。
- 解决方案:**
问题是在排序列表之后,我没有调用notifyDataChanged();
此外,我在我的CursorAdapter类中创建了一个通过游标检索字段的方法。
所以在游标适配器中我做了这个:
public View setAllFields(View view,String id, String title, String comment, String date, String time)
{
TextView id_lv_tv = (TextView) view.findViewById(R.id.id_lv_tv);
TextView title_lv_tv = (TextView) view.findViewById(R.id.title_lv_tv);
TextView comment_lv_tv = (TextView) view.findViewById(R.id.comment_lv_tv);
TextView date_lv_tv = (TextView) view.findViewById(R.id.date_lv_tv);
TextView time_lv_tv = (TextView) view.findViewById(R.id.time_lv_tv);
id_lv_tv.setText(id);
title_lv_tv.setText(title);
comment_lv_tv.setText(comment);
date_lv_tv.setText(date);
time_lv_tv.setText(time);
return view;
}
而我现在的主onitemclick是这样的:
公共void onItemClick(适配器视图父视图,视图视图,整数位置,长ID){视图view1 = getLayoutInflater(). inflate(www.example.com_event_from_listview,空);R.layout.show小时事件myEvent =(小时事件)月列表视图. getAdapter(). getItem(位置); // private ArrayList MlaDats = new ArrayList(); HourEvent myEvent = (HourEvent) monthListView.getAdapter().getItem(position);
String myEventId= myEvent.getEvents().get(0).getId();
String myTitle = myEvent.getEvents().get(0).getName();
String myComment = myEvent.getEvents().get(0).getComment();
String myDate = String.valueOf(myEvent.getEvents().get(0).getDate());
String myTime = String.valueOf(myEvent.getEvents().get(0).getTime());
View viewFinal;
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
viewFinal = CA.setAllFields(view1,myEventId,myTitle,myComment,myDate,myTime);
//viewFinal = SD.getView(位置,视图1,父视图);
builder.setView(viewFinal).
关闭
1条答案
按热度按时间eyh26e7m1#
我正在使用一个带有事件的日历应用程序,我将它们保存在MyDatabaseHelpe中,事件按天显示在列表视图中,我的问题是,在onitemclicked中,我希望事件的数据显示在AlertDialog中,我使用CursorAdapter类,当我试图显示数据时,位置0的数据,arent显示并且显示在位置1的数据.游标适配器getview问题在位置0
我已经尝试了许多方法的立场,可以适合在功能,我搜索了许多StackOverFlows(和更多的网站)的主题,以找到一个解决方案。
任何想法或方法都将是有益的!
问题是在排序列表之后,我没有调用notifyDataChanged();
此外,我在我的CursorAdapter类中创建了一个通过游标检索字段的方法。
所以在游标适配器中我做了这个:
我现在的主页是这样的: