我有ListView
其中我設置了ImageView
,2 TextView
和2 ImageButton
。 ImageButtons
用於添加和刪除listItem。
這裏是我的代碼...
Helper.java
如何使用arrayadapter和notifyDataSetChanged刪除ListView項目
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
.
.
.
import com.example.customObject.ContactBean;
import com.example.helper.HelperAdaptor;
import com.example.helper.ImageHelper;
public class Helper extends Activity implements OnItemClickListener {
private List<ContactBean> list = new ArrayList<ContactBean>();
private ListView listView;
private Button add_helper;
public HelperAdaptor objAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_helper);
listView = (ListView) findViewById(R.id.lstview_helper_helperlist);
listView.setOnItemClickListener(this);
add_helper = (Button) findViewById(R.id.btn_helper_addhelper);
add_helper.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),
ContactListActivity.class);
startActivityForResult(intent, SELECT_CONTACT);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_CONTACT) {
ContactBean objContact = new ContactBean();
objContact.setName(helperName);
objContact.setPhoneNo(helperNumber);
objContact.setPic(image);
list.add(objContact);
objAdapter = new HelperAdaptor(Helper.this,
R.layout.activity_helper_rows, list);
listView.setAdapter(objAdapter);
}
}
}
@Override
public void onItemClick(AdapterView<?> listview, View v, int position,
long id) {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.helper, menu);
return true;
}
}
HelperAdapter.java
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
.
.
.
import com.example.customObject.ContactBean;
import com.example.helpmerestart.ContactListActivity;
import com.example.helpmerestart.R;
public class HelperAdaptor extends ArrayAdapter<ContactBean> {
private Activity activity;
private List<ContactBean> items;
private int row;
private ContactBean objBean;
private ViewHolder holder;
private int itemIndex;
private View view;
public HelperAdaptor(Activity act, int row, List<ContactBean> items) {
super(act, row, items);
this.activity = act;
this.row = row;
this.items = items;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
view = convertView;
itemIndex = position;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(row, null);
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null) || ((position + 1) > items.size()))
return view;
objBean = items.get(position);
holder.add = (ImageButton) view.findViewById(R.id.btn_helper_add);
holder.remove = (ImageButton) view.findViewById(R.id.btn_helper_remove);
if (holder.tvname != null && null != objBean.getName()
&& objBean.getName().trim().length() > 0) {
holder.tvname.setText(Html.fromHtml(objBean.getName()));
}
if (holder.tvPhoneNo != null && null != objBean.getPhoneNo()
&& objBean.getPhoneNo().trim().length() > 0) {
holder.tvPhoneNo.setText(Html.fromHtml(objBean.getPhoneNo()));
}
if (holder.profilepic != null && null != objBean.getPic()) {
holder.profilepic.setImageBitmap(objBean.getPic());
}
holder.add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
addHelper();
}
});
holder.remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
items.remove(itemIndex);
//trying to call notifyDataSetChanged() here
}
}
);
return view;
}
public void addHelper() {
Intent intent = new Intent(activity.getApplicationContext(),
ContactListActivity.class);
activity.startActivityForResult(intent, SELECT_CONTACT);
holder.add.setClickable(false);
holder.remove.setClickable(true);
}
public class ViewHolder {
public TextView tvname, tvPhoneNo;
public ImageView profilepic;
public ImageButton add, remove;
}
}
問題是我不能夠刪除的listItem爲點擊刪除按鈕。你可以參考Previous post來理解我想要的東西。我試圖調用notdifyDataSetChanged()onClick()的刪除按鈕,但沒有得到如何做到這一點。
任何其他方法,我可以得到我的目的工作將被認爲。
Regards ..
Sourabh
使用'objAdapter.remove(objectToRemove);'' – Blackbelt
是ObjAdapter'在輔助類和'remove.setOnClickListner() '在HelperAdaptor中。我試圖從'remove.setOnClickListner()'通知。主要問題是在HelperAdaptor類中獲得'objAdaptor'引用。 – user2376920
不,我不明白。你有HelperAdaptor,並且當你按下Remove時,你想從數據集中刪除一個項目? – Blackbelt