Ich habe einen benutzerdefinierten Listenadapter. Ich möchte Werte von diesem Listenadapter an eine Aktivität übergeben, für die ich den Adapter festgelegt habe. Das ist mein Adaptercode.Wie sende ich Daten vom Listenadapter an Aktivitäten in Android?
public class RoleList extends ArrayAdapter<String>
{
private ArrayList<String> name;
private ArrayList<String> username;
private ArrayList<String> password;
private ArrayList<String> role;
private Activity context;
private MyActionCallback callback;
public RoleList(Activity context, ArrayList<String> name, ArrayList<String> username, ArrayList<String> password, ArrayList<String> role, MyActionCallback callback)
{
super(context, R.layout.role_list,name);
this.context = context;
this.name = name;
this.username =username;
this.password = password;
this.role = role;
this.callback = callback;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = context.getLayoutInflater();
final View listViewItem = inflater.inflate(R.layout.role_list, null, true);
final TextView textViewName = (TextView) listViewItem.findViewById(R.id.tv_empname);
final TextView textViewusername = (TextView) listViewItem.findViewById(R.id.tv_empusername);
final TextView textViewPass = (TextView) listViewItem.findViewById(R.id.tv_emppassword);
final TextView textViewRole = (TextView) listViewItem.findViewById(R.id.tv_emprole);
Button edit = (Button) listViewItem.findViewById(R.id.btn_editRole);
Button delete = (Button) listViewItem.findViewById(R.id.btn_delRole);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
name.remove(position);
username.remove(position);
password.remove(position);
role.remove(position);
callback.onActionPerformed(position);
notifyDataSetChanged();
}
});
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Log.d("Emp Info", name.get(position) + " " + username.get(position) + " " + password.get(position) + " " + role.get(position));
final Dialog dialog = new Dialog(getContext());
dialog.setContentView(R.layout.userreg);
dialog.setTitle("Edit Employee " + name.get(position) + " details");
final String[] arraySpinner = new String[]{"Manager","Stockist","Cashier","Accountant"};
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
final EditText emp_name = (EditText) dialog.findViewById(R.id.editTextName);
final EditText emp_uname = (EditText) dialog.findViewById(R.id.editTextUserName);
final EditText emp_pw = (EditText) dialog.findViewById(R.id.editTextPassword);
final Spinner emp_role = (Spinner) dialog.findViewById(R.id.spinner_role);
final TextView textRole = (TextView) dialog.findViewById(R.id.tv_selected_role);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item, arraySpinner);
emp_role.setAdapter(adapter);
emp_role.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getContext(), "Role Selected is " + arraySpinner[position], Toast.LENGTH_SHORT).show();
String employee_role = arraySpinner[position];
textRole.setText(employee_role);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
emp_name.setText(name.get(position));
emp_uname.setText(username.get(position));
emp_pw.setText(password.get(position));
emp_role.setSelection(position);
Button buttoncancel = (Button) dialog.findViewById(R.id.buttonCancel);
buttoncancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Button buttonChange = (Button) dialog.findViewById(R.id.buttonRegister);
buttonChange.setText("Change");
buttonChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
textViewName.setText(emp_name.getText().toString());
textViewusername.setText(emp_uname.getText().toString());
textViewPass.setText(emp_pw.getText().toString());
textViewRole.setText(textRole.getText());
dialog.dismiss();
}
});
dialog.show();
}
});
textViewName.setText(name.get(position));
textViewusername.setText(username.get(position));
textViewPass.setText(password.get(position));
textViewRole.setText(role.get(position));
return listViewItem;
}
public interface MyActionCallback{
void onActionPerformed(int position);
}
}
Protokoll für Nullzeiger Ausnahme.
04-23 14: 59: 24.919 bis 24.919 16,462/org.bordetuts.com.goldmine E/Android Runtime: fatal EXCEPTION: main 04-23 14: 59: 16,462 24.919-24.919/org.bordetuts .com.goldmine E/AndroidRuntime: Prozess: org.bordetuts.com.goldmine, PID: 24919 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: java.lang .NullPointerException 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um org.bordetuts.com.goldmine.adapter.RoleList $ 1.onClick (RoleList.java:67) 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um android.view.View.performClick (View.java:4444) 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um android.view .View $ PerformClick.run (View.java:18440) 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um android.os.Handler.handleCallback (Handler.java : 733) 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um android.os.Handler.dispatchMessage (Handler.java:95) 04-23 14:59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um android.os.Looper.loop (Looper.java:136) 04-23 14: 59: 16.462 24919-24919/org.bordetuts. com.goldmine E/AndroidRuntime: um android.app.ActivityThread.main (ActivityThread.java:5028) 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: bei java.lang.reflect.Method.invokeNative (Native Methode) 04-23 14: 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: bei java.lang.reflect.Method.invoke (Methode.java: 515) 04-23 14 : 59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:788) 04-23 14:59: 16.462 24919-24919/org.bordetuts.com.goldmine E/AndroidRuntime: um com.android.internal.os.ZygoteInit.main (ZygoteInit.java:604) 04-23 14: 59: 16.462 24919-24919/org.bor detuts.com.goldmine E/Android Runtime: bei dalvik.system.NativeStart.main (Mutter Methode)
Ich möchte die Tätigkeit informieren, dass etwas in der geändert adapter.For zB. Löschen wurde für eine bestimmte Position gedrückt. Alle Vorschläge, Hilfe oder Hinweise helfen. Danke.
Sie können einfach einen Rückruf durchführen, den Ihre Aktivität implementiert und ihn für eine benutzerdefinierte Aktion aufrufen. –
@YuriiTsap Vielen Dank, dass Sie einen Beispielcode zur Anleitung bereitstellen können. –