사용자 지정 어댑터와 listItemView가 구현되었습니다. 어댑터는 onlclick 리스너를 listItemView에있는 버튼으로 설정합니다. onclick 리스너는 단순히 어댑터에있는 개인 메서드를 호출하고 제거 할 항목의 위치에 전달합니다. 데이터베이스가 적절한 항목을 제거하기 때문에 위치가 정확하다는 것을 알고 있습니다. 비슷한 질문을 찾았지만 답을 나를 위해 일할 수있는 적응력을 갖추지 못했습니다. 아이디어와 생각은 크게 감사드립니다. 감사.사용자 지정 어댑터에서 전화를 걸면 항상 마지막 항목이 제거됩니다.
다음은 전체 어댑터 클래스 다음
public class FoodListAdapter extends ArrayAdapter<FoodListItem> {
//private
private int type;
public FoodListAdapter(Context context, ArrayList<FoodListItem> _objects) {
super(context, 0, _objects);
type = 0;
}
public FoodListAdapter(Context context, ArrayList<FoodListItem> _objects, int _type) {
super(context, 0, _objects);
type = _type;
}
@Override
public View getView(int position, View reusableView, ViewGroup parent)
{
//Cast the reusable view to a listAdpaterItemView
FoodListItemView listItemView = (FoodListItemView) reusableView;
//Check if the listAdapterItem is null
if(listItemView == null)
{
//If it is null, then create a view.
listItemView = FoodListItemView.inflate(parent, this, type);
}
if (type == 2)
{
Button deleteButton = (Button) listItemView.findViewById(R.id.listItemViewDeleteBTN);
deleteButton.setTag(new Integer(position));
}
//Now we need to set the view to display the data.
listItemView.setData(getItem(position));
return listItemView;
}
}
조각에 사용되는 내 코드의 일부이다. 내가 필요하다고 생각하지는 않지만, private 변수가 listAdapter 클래스에 데칼로 선언되어있다.
private void displayListForDate(Calendar _date)
{
//get the list view
ListView listView = (ListView) getView().findViewById(1);
//Clear the listview by removing the listadapter and setting it to null.
//listView.setAdapter(null);
//First we must get the items.
Global global = (Global) getActivity().getApplicationContext();
DietSQLiteHelper database = global.getDatabase();
//Create a list to hold the items we ate. This list will then be added to the listView.
final ArrayList<FoodListItem> consumedList;
//Add the items to the array.
consumedList = database.getConsumed(_date.getTimeInMillis());
//Create an adapter to be used by the listView
listAdapter = new FoodListAdapter(getActivity().getBaseContext(), consumedList, 2);
//Add the adapter to the listView.
listView.setAdapter(listAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
consumedList.remove(position);
listAdapter.notifyDataSetChanged();
}
});
}
여기서 어댑터에서 데이터를 제거 하시겠습니까? – Rohit5k2
deleteItem()에서 remove (item)을 호출하려고합니다.이 메서드는 adapater 클래스에 있습니다. – n01d3a
'remove (item)'메소드의 코드를 게시 할 수 있습니까? – Rohit5k2