Имеет listView
и добавить button
в Деятельность A. Данные listView
извлекаются из MySQL
.Добавить новый список в списокView
[! [http://i.stack.imgur.com/wVmSK.png][1]][1]
Когда список будет нажата, она будет передавать данные на активность B, если добавить button
щелчке, она будет идти на активность B для пользователя, чтобы добавить данные. Я использую mClickedPosition
для того, чтобы отличить, было ли нажато list
или button
.
активность
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);
}
});
Предположим, пользователь нажимает добавить button
. (MClickedposition == - 1)
активность B
Когда сохранить button
нажата, данные вставляются в MySQL
с mClickedPosition == - 1 После этого я nt новые данные возвращаются к Activity A и добавляют новый список в A, что означает, что у Activity A должно быть 2 списка. Как я могу это достичь?
save.setOnClickListener(new View.OnClickListener() { // if save button clicked
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
project1 = Project2.getSelectedItem().toString();
description = Description.getText().toString();
progress = seekBar.getProgress();
timeIn = TimeIn.getText().toString();
timeOut = TimeOut.getText().toString();
if(mClickedPosition==-1)
{
Add(project1,description,progress,timeIn,timeOut);
}
else
{
Update(project1, description, progress, timeIn, timeOut);
}
returnIntent.putExtra("project1", project1);
returnIntent.putExtra("description", description);
returnIntent.putExtra("progress", progress);
returnIntent.putExtra("timeIn", timeIn);
returnIntent.putExtra("timeOut", timeOut);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
активность 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();
}
}
}
}
Теперь я могу видеть новый список, добавленный в деятельности А. Но когда я нажимаю на новый список и перейти к деятельности B, нет данных прошло. Но если я нажму старый список, я могу видеть данные прошли ...
почему вы используете два адаптера? Адаптер ListAdapter; CustomBaseAdapter obj ;? –
Какой адаптер вы устанавливаете в ListView? –
@SanjeetAjnabee Я удалил CustomBaseAdapter – Tony