Я новичок в Android. Я разрабатываю приложение, в котором у меня есть список сотрудников. В представлении «Список» отображается текстовое представление, например, имя сотрудника и три вида изображений. При щелчке одного изображения я должен удалить этого сотрудника из базы данных, а при щелчке другого изображения мне нужно отредактировать детали, для которых у меня есть другое действие. при щелчке этого изображения редактирования я хочу начать новую деятельность и передать детали соответствующего сотрудника, используя намерение, которое будет показано в edittext. Но это не работает должным образом. Если я нажму на удаление образа первого сотрудника, какой-то другой сотрудник удаляется. и при передаче данных в данные EditActivity также неверно.не получает правильные данные от адаптера до следующей активности
Пожалуйста, помогите мне. Как это сделать?
В моей основной деятельности Я получаю данные с сервера в формате JSONArray, и я показываю данные в виде списка. Я не понимаю, почему я не получаю правильные данные. У меня есть что-то неправильное в MainActivity или адаптер ..
Это мой адаптер
public class EmployeesAdapter extends BaseAdapter {
TextView categoryName;
Pojo pojo;
private Context activity1;
ArrayList<Pojo> data1;
private ArrayList<Pojo> arraylist1 = null;
public static LayoutInflater inflater;
ImageView edit, delete, historyy;
String del_empid;
public EmployeesAdapter(Context ctx, ArrayList<Pojo> employee1) {
activity1 = ctx;
data1 = employee1;
inflater = (LayoutInflater) activity1
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.arraylist1 = new ArrayList<Pojo>();
this.arraylist1.addAll(data1);
}
@Override
public int getCount() {
return data1.size();
}
@Override
public Object getItem(int position) {
return data1.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
v = inflater.inflate(R.layout.manage_emp_list, parent, false);
pojo = data1.get(position);
categoryName = (TextView) v.findViewById(R.id.employeeName);
categoryName.setText(pojo.getMgEmpName());
edit = (ImageView) v.findViewById(R.id.imgedit);
delete = (ImageView) v.findViewById(R.id.imgdelete);
historyy = (ImageView) v.findViewById(R.id.imgHistory);
final int pos = position;
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Pojo domain = data1.get(pos);
String emp_name = domain.getMgEmpName();
String emp_contact = domain.getMgEmpContact();
String emp_email = domain.getMgEmpEmail();
String emp_appcost = domain.getMgEmpAppCost();
Intent i = new Intent(activity1, EditEmployee.class);
i.putExtra("empname", emp_name);
i.putExtra("empmobile", emp_contact);
i.putExtra("empemail", emp_email);
i.putExtra("empappcost", emp_appcost);
activity1.startActivity(i);
}
});
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
del_empid = data1.get(position).getMgEmp_id();
new NetCheck().execute();
}
});
return v;
}
Это Mainactivity, где я получаю данные с сервера, который я отображая его в ListView. Здесь я показываю только имя сотрудника с тремя изображениями в элементе списка. Но у меня есть несколько данных для каждого элемента в виде списка. Я использую функции setter и getter. Также я хочу показать предыдущие данные перед загрузкой с сервера, поэтому я использовал SharedPreferences. Я делаю что-то не так в этой MainActivty, поэтому я получаю такой тип проблемы у adpter?
public class EmployeesActivity extends AppCompatActivity {
Pojo pojo;
String strServerResponse = null;
ArrayList<Pojo> employee1;
EmployeesAdapter mainAdapter;
String tipsss;
ArrayList<String> tii;
ListView mainList;
String emplid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_employees);
mainList = (ListView) findViewById(R.id.manageemployeeList);
employee1 = new ArrayList<Pojo>();
tii = new ArrayList<String>();
new NetCheck().execute();
};
private class NetCheck extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
SharedPreferences prefs = getSharedPreferences("MyPref4", MODE_PRIVATE);
Pojo pojo;
Set<String> names = prefs.getStringSet("employeename", null);
Set<String> ids = prefs.getStringSet("employeeid", null);
Set<String> mobiles = prefs.getStringSet("employeemobile", null);
Set<String> emails = prefs.getStringSet("employeeemail", null);
Set<String> appcosts = prefs.getStringSet("employeeappcost", null);
List<String> nameList = new ArrayList<String>(0);
nameList.addAll(names);
List<String> idList = new ArrayList<String>(0);
idList.addAll(ids);
List<String> mobileList = new ArrayList<String>(0);
mobileList.addAll(mobiles);
List<String> emailidList = new ArrayList<String>(0);
emailidList.addAll(emails);
List<String> appcostidList = new ArrayList<String>(0);
appcostidList.addAll(appcosts);
employee1.clear();
for (int i = 0; i < names.size(); i++) {
pojo = new Pojo();
pojo.setMgEmpName(nameList.get(i));
pojo.setMgEmp_id(idList.get(i));
pojo.setMgEmpContact(mobileList.get(i));
pojo.setMgEmpEmail(emailidList.get(i));
pojo.setMgEmpAppCost(appcostidList.get(i));
employee1.add(pojo);
}
mainAdapter = new EmployeesAdapter(EmployeesActivity.this, employee1);
mainList.setAdapter(mainAdapter);
return;
}
@Override
protected Void doInBackground(Void... params) {
try {
SharedPreferences preff = getSharedPreferences(
"MyPref", MODE_PRIVATE);
String id = preff.getString("id", null);
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpRequest = new HttpPost(
"http://url");
httpRequest.setHeader("Content-Type", "application/json");
JSONObject json = new JSONObject();
json.put("employer_id", id);
StringEntity se = new StringEntity(json.toString());
se.setContentEncoding("UTF-8");
se.setContentType("application/json");
httpRequest.setEntity(se);
HttpResponse httpRes = httpClient.execute(httpRequest);
java.io.InputStream inputStream = httpRes.getEntity()
.getContent();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
inputStream.close();
strServerResponse = sb.toString();
if (strServerResponse != null) {
try {
JSONArray arr = new JSONArray(strServerResponse);
JSONObject jsonObj = arr.getJSONObject(0);
ArrayList<String> tii = new ArrayList<String>();
ArrayList<String> tii2 = new ArrayList<String>();
ArrayList<String> tii3 = new ArrayList<String>();
ArrayList<String> tii4 = new ArrayList<String>();
ArrayList<String> tii5 = new ArrayList<String>();
for (int i = 0; i < arr.length(); i++) {
pojo = new Pojo();
JSONObject jobj2 = arr.getJSONObject(i);
String empname = jobj2.optString("name");
String empid = jobj2.optString("id");
String empmobile = jobj2.optString("mobile");
String empemail = jobj2.optString("email");
String empappcost = jobj2.optString("app_cost");
tii.add(empname);
tii2.add(empid);
tii3.add(empmobile);
tii4.add(empemail);
tii5.add(empappcost);
}
List<String> listTemp = tii;
List<String> listTemp1 = tii2;
List<String> listTemp2 = tii3;
List<String> listTemp3 = tii4;
List<String> listTemp4 = tii5;
Set<String> temp = new HashSet<String>(listTemp);
Set<String> temp2 = new HashSet<String>(listTemp1);
Set<String> temp3 = new HashSet<String>(listTemp2);
Set<String> temp4 = new HashSet<String>(listTemp3);
Set<String> temp5 = new HashSet<String>(listTemp4);
SharedPreferences.Editor editor = getSharedPreferences("MyPref4", MODE_PRIVATE).edit();
temp.addAll(listTemp);
temp2.addAll(listTemp1);
temp3.addAll(listTemp2);
temp4.addAll(listTemp3);
temp5.addAll(listTemp4);
editor.putStringSet("employeename", temp);
editor.putStringSet("employeeid", temp2);
editor.putStringSet("employeemobile", temp3);
editor.putStringSet("employeeemail", temp4);
editor.putStringSet("employeeappcost", temp5);
editor.commit();
}
это мой класс Pojo, где у меня есть функции setter и getter для деталей сотрудников.
public class Pojo {
private String mg_empName;
private String mg_empEmail;
private String mg_empContact;
public void setMgEmpContact(String mg_empContact) {
this.mg_empContact = mg_empContact;
}
public String getMgEmpContact() {
return mg_empContact;
}
public void setMgEmpEmail(String mg_empEmail) {
this.mg_empEmail = mg_empEmail;
}
public String getMgEmpEmail() {
return mg_empEmail;
}
public void setMgEmpName(String mg_empName) {
this.mg_empName = mg_empName;
}
public String getMgEmpName() {
return mg_empName;
}
}
Может ли кто-нибудь мне помочь. Почему у меня возникает такая проблема? Здесь что-то не так? Способ я использовал Список_массивы и затем установить данные в postExecute() метод является правильным? ......
Спасибо, но это не работает –
что можно получить в onclick можно сказать это –
Надеюсь, это будет хорошо .... для меня это работает –