Android 将新列表添加到listView中
在活动a中有一个Android 将新列表添加到listView中,android,mysql,listview,android-listview,Android,Mysql,Listview,Android Listview,在活动a中有一个列表视图和一个添加按钮。listView数据是从MySQL检索的 [[ 单击列表时,它会将数据传递到活动B,如果单击添加按钮,它将转到活动B,供用户添加数据。我使用mClickedPosition来区分是单击了列表还是单击了按钮 活动A ListView listViewUpdate; ListAdapter adapter; Button add; String ID, iD; public static final int PROJECT
列表视图
和一个添加按钮
。listView
数据是从MySQL
检索的
[[
单击列表时,它会将数据传递到活动B,如果单击添加按钮
,它将转到活动B,供用户添加数据。我使用mClickedPosition
来区分是单击了列表
还是单击了按钮
活动A
ListView listViewUpdate;
ListAdapter adapter;
Button add;
String ID, iD;
public static final int PROJECT_REQUEST_CODE = 1;
public static final int CAMERA_REQUEST_CODE = 2;
int mClickedPosition;
String ReceiveProject, ReceiveDescription, ReceiveTimeIn, ReceiveTimeOut;
Integer ReceiveProgress;
ArrayList<DetailsBean> results = new ArrayList<DetailsBean>();
String myJSON;
JSONArray details = null;
ArrayList<HashMap<String, String>> EditDetails;
listViewUpdate.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
mClickedPosition = position; // listView click
HashMap<String, String> clickedItem = EditDetails.get(position);
iD = clickedItem.get(Configs.TAG_ID);
Intent intent = new Intent(getActivity(), Edit_Details.class);
intent.putExtra("iD", iD);
intent.putExtra("ID", ID);
intent.putExtra("mClickedPosition",mClickedPosition);
//Toast.makeText(getActivity(),"This is"+iD+ID,Toast.LENGTH_LONG).show();
startActivityForResult(intent, PROJECT_REQUEST_CODE);
}
});
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mClickedPosition = -1; // if button clicked
Intent intent = new Intent(getActivity(), Edit_Details.class);
intent.putExtra("ID", ID);
startActivity(intent);
}
});
活动A onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from Activity B and populate ListView A
if (resultCode == Activity.RESULT_OK) {
if (requestCode == PROJECT_REQUEST_CODE) {
ReceiveProject = data.getStringExtra("project1");
ReceiveDescription = data.getStringExtra("description");
ReceiveProgress = data.getIntExtra("progress", 0);
ReceiveTimeIn = data.getStringExtra("timeIn");
ReceiveTimeOut = data.getStringExtra("timeOut");
Toast.makeText(getActivity(),ReceiveProject+ReceiveDescription+ReceiveProgress+ReceiveTimeIn+ReceiveTimeOut,Toast.LENGTH_LONG).show();
if(mClickedPosition==-1)
{ // add list
HashMap<String, String> clickedItem = new HashMap<>();
clickedItem.put(Configs.TAG_PROJECT, ReceiveProject);
clickedItem.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription);
clickedItem.put(Configs.TAG_PERCENTAGE, ReceiveProgress + "");
clickedItem.put(Configs.TAG_IN, ReceiveTimeIn);
clickedItem.put(Configs.TAG_OUT, ReceiveTimeOut);
EditDetails.add(clickedItem);
((BaseAdapter) adapter).notifyDataSetChanged();
}
else
{ // update list
HashMap<String, String> clickedItem =EditDetails.get(mClickedPosition);
clickedItem.put(Configs.TAG_PROJECT, ReceiveProject);
clickedItem.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription);
clickedItem.put(Configs.TAG_PERCENTAGE, ReceiveProgress + "");
clickedItem.put(Configs.TAG_IN, ReceiveTimeIn);
clickedItem.put(Configs.TAG_OUT, ReceiveTimeOut);
((BaseAdapter) adapter).notifyDataSetChanged();
}
//((BaseAdapter) adapter).notifyDataSetChanged();
}
}
}
}
@覆盖
activityresult(int-requestCode、int-resultCode、Intent-data)上的公共void{//从活动B接收并填充ListView A
if(resultCode==Activity.RESULT\u确定){
if(requestCode==项目\请求\代码){
ReceiveProject=data.getStringExtra(“项目1”);
ReceiveDescription=data.getStringExtra(“说明”);
ReceiveProgress=data.getIntExtra(“progress”,0);
ReceiveTimeIn=data.getStringExtra(“timeIn”);
ReceiveTimeOut=data.getStringExtra(“超时”);
Toast.makeText(getActivity(),ReceiveProject+ReceiveDescription+ReceiveProgress+ReceiveTimeIn+ReceiveTimeOut,Toast.LENGTH\u LONG).show();
如果(mClickedPosition==-1)
{//添加列表
HashMap clickedItem=新建HashMap();
单击编辑项放置(配置标记项目、接收项目);
点击编辑项放置(配置项工作描述、接收描述);
单击editem.put(Configs.TAG_PERCENTAGE,ReceiveProgress+);
单击editem.put(Configs.TAG_IN,ReceiveTimeIn);
单击编辑项输出(配置标记输出,接收超时);
编辑详细信息。添加(单击编辑项);
((BaseAdapter)adapter).notifyDataSetChanged();
}
其他的
{//更新列表
HashMap clickedItem=EditDetails.get(mClickedPosition);
单击编辑项放置(配置标记项目、接收项目);
点击编辑项放置(配置项工作描述、接收描述);
单击editem.put(Configs.TAG_PERCENTAGE,ReceiveProgress+);
单击editem.put(Configs.TAG_IN,ReceiveTimeIn);
单击编辑项输出(配置标记输出,接收超时);
((BaseAdapter)adapter).notifyDataSetChanged();
}
//((BaseAdapter)adapter).notifyDataSetChanged();
}
}
}
}
现在我可以看到活动a中添加的新列表。但是当我单击“新建”时
列表并转到活动B,不会传递任何数据。但是如果我单击旧的
列表中,我可以看到传递的数据
您需要在列表中添加或更新新数据,然后调用notifiDataSetChanged(); 更改活动A的onActivity结果方法中的代码,如下所示-
HashMap<String, String> item = new HashMap<>();
item.put(Configs.TAG_PROJECT, ReceiveProject);
item.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription);
item.put(Configs.TAG_PERCENTAGE, ReceiveProgress + "");
item.put(Configs.TAG_IN, ReceiveTimeIn);
item.put(Configs.TAG_OUT, ReceiveTimeOut);
if(mClickedPosition==-1)
{ // add list
EditDetails.add(item);
}
else
{ // update list
EditDetails.remove(mClickedPosition);
mEventsList.add(mClickedPosition,item)
}
((BaseAdapter) adapter).notifyDataSetChanged();
HashMap item=newhashmap();
项。放置(配置标记项目、接收项目);
物品放置(配置标签、工作描述、接收描述);
item.put(Configs.TAG_百分比,ReceiveProgress+“”);
项。输入(配置标记,接收时间输入);
item.put(配置标记、接收超时);
如果(mClickedPosition==-1)
{//添加列表
编辑详细信息。添加(项目);
}
其他的
{//更新列表
EditDetails.remove(mClickedPosition);
mEventsList.add(mClickedPosition,项)
}
((BaseAdapter)adapter).notifyDataSetChanged();
为什么要使用两个适配器?ListAdapter;CustomBaseAdapter obj;?您正在将哪个适配器设置为ListView?@SanjeetAjnabee我已删除CustomBaseAdapter您应该创建一个对象类来包含所有数据,然后为其创建一个适配器。ArrayAdapter
优先于BaseAdapter
unless您需要特殊功能。@crick_007 ArrayList results=new ArrayList();?HashMap item=new HashMap();
ReceiveTimeOut=data.getStringExtra(“timeOut”);?是的,在将其添加到列表na之前需要这些值。EditDetails.remove(mClickedPosition)
和mEventsList.add(mClickedPosition,item)
for?您需要更新列表中的值,我不确定更新特定位置上的HasMaps实例并调用notifyDataSetChanged()是否能正常工作。请使用我建议的方法bro!或在else和if block中移动操作。
HashMap<String, String> item = new HashMap<>();
item.put(Configs.TAG_PROJECT, ReceiveProject);
item.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription);
item.put(Configs.TAG_PERCENTAGE, ReceiveProgress + "");
item.put(Configs.TAG_IN, ReceiveTimeIn);
item.put(Configs.TAG_OUT, ReceiveTimeOut);
if(mClickedPosition==-1)
{ // add list
EditDetails.add(item);
}
else
{ // update list
EditDetails.remove(mClickedPosition);
mEventsList.add(mClickedPosition,item)
}
((BaseAdapter) adapter).notifyDataSetChanged();