2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
用于interface回調(diào)。Activity與Adapter之間的橋接接口;一旦用戶在 Adapter 的視圖上執(zhí)行操作 - 給 Activity 回調(diào)。
界面
interface OnItemClickListener {
void onItemClick(View view, int position, String name)
}
活動(dòng)
public class EditActivity extends AppCompatActivity implements
OnItemClickListener {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
ReminderListAdapter adapter = new ReminderListAdapter(this, R.layout.reminder_view, ReminderList);
adapter.setListener(this);
listView.setAdapter(adapter);
...
}
@Override
public void onItemClick(final View view, final int position, final String name) {
//Your callback
delete_Reminder(name);
}
}
適配器
public class ReminderListAdapter extends ArrayAdapter<Reminder> {
private Context mContext;
private int mResource;
private final OnItemClickListener listener;
public ReminderListAdapter(@NonNull Context context, int resource,
@NonNull ArrayList<Reminder> objects) {
super(context, resource, objects);
mContext = context;
mResource = resource;
}
public setListener(final OnItemClickListener listener) {
this.listener = listener;
}
...
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
...
delbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(convertView, position, name);
}
});
}
}

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
您在每次循環(huán)迭代時(shí)設(shè)置適配器,而它應(yīng)該在循環(huán)完成后僅設(shè)置一次。
我可以在您的代碼中看到幾個(gè)設(shè)計(jì)問(wèn)題(如果這是您的應(yīng)用程序,這是可以理解的。
ReminderList 以大寫字母開頭 - 按照慣例,變量和方法名稱以小寫字母開頭,常量名稱全部大寫,類名稱以大寫字母開頭
我不確定您的應(yīng)用程序要去哪里,但是當(dāng)從數(shù)據(jù)庫(kù)加載數(shù)據(jù)時(shí),您可能需要考慮將它們加載到CursorAdapter而不是 ArrayAdapter
另請(qǐng)查看數(shù)據(jù)綁定庫(kù)和 MVC 設(shè)計(jì)以獲得更清晰的代碼。
添加回答
舉報(bào)