하나의 ListView를 만든 안드로이드 응용 프로그램을 개발 중입니다. ListView에서 각 행에 2 개의 단추를 추가해야합니다. 이 두 버튼은 추가 및 삭제 버튼입니다. 사용자가 버튼 중 하나를 선택하면 몇 가지 조치를 취해야합니다. 내가 어떻게 해?안드로이드의 각 행에 추가 및 삭제 버튼이있는 ListView
답변
public class UserCustomAdapter extends ArrayAdapter<User> {
Context context;
int layoutResourceId;
ArrayList<User> data = new ArrayList<User>();
public UserCustomAdapter(Context context, int layoutResourceId,
ArrayList<User> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
UserHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new UserHolder();
holder.textName = (TextView) row.findViewById(R.id.textView1);
holder.textAddress = (TextView) row.findViewById(R.id.textView2);
holder.textLocation = (TextView) row.findViewById(R.id.textView3);
holder.btnEdit = (Button) row.findViewById(R.id.button1);
holder.btnDelete = (Button) row.findViewById(R.id.button2);
row.setTag(holder);
} else {
holder = (UserHolder) row.getTag();
}
User user = data.get(position);
holder.textName.setText(user.getName());
holder.textAddress.setText(user.getAddress());
holder.textLocation.setText(user.getLocation());
holder.btnEdit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("Edit Button Clicked", "**********");
Toast.makeText(context, "Edit button Clicked",
Toast.LENGTH_LONG).show();
}
});
holder.btnDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("Delete Button Clicked", "**********");
Toast.makeText(context, "Delete button Clicked",
Toast.LENGTH_LONG).show();
}
});
return row;
}
static class UserHolder {
TextView textName;
TextView textAddress;
TextView textLocation;
Button btnEdit;
Button btnDelete;
}
}
야 제발 내가 여기 내 블로그에 같은 대답을 가지고 look here-
.. 삭제 버튼 클릭 이벤트에
혼란이 있습니다. 내 ListView가 준비되었습니다. 각 행에 두 개의 버튼을 추가하면됩니다. 나는 당신의 코드를 분명히 알지 못한다. –
는 다른 텍스트 뷰처럼 row_layout.xml에 두 개의 버튼을 넣어 자신의 ID .. 로 전화하여 (새 OnClickListener를() { @Override 공공 무효의 onclick (ME- holder.btnDelete.setOnClickListener처럼 온 클릭 리스너를 설정 보기 v) { // TODO 자동 생성 메소드 스텁 Log.i ("Delete Button Clicked", "**********"); Toast.makeText (컨텍스트, "삭제 버튼 클릭" , Toast.LENGTH_LONG) .show(); } }); –
음 나는 모든 코드를 붙여 넣기하고 코드를 작업하는 것을 쉽게 이해할 수있는 데모 애플리케이션을 만드는 것이 좋습니다. –
public void delete(View v){
ListView listview1;
ArrayList<E> datalist;
final int position = listview1.getPositionForView((View) v.getParent());
datalist.remove(position);
myAdapter.notifyDataSetChanged();
}
가 먼저 정의를 만들어야합니다 귀하의 목록에있는 단일 항목을 나타내는 레이아웃 xml. 목록에서 표시하려는 다른 항목과 함께이 레이아웃에 두 개의 단추를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/list_item_string"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:paddingLeft="8dp"
android:textSize="18sp"
android:textStyle="bold" />
<Button
android:id="@+id/delete_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:text="Delete" />
<Button
android:id="@+id/add_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/delete_btn"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:text="Add" />
</RelativeLayout>
다음 당신은 당신이 당신의 XML 레이아웃을 팽창뿐 아니라 버튼 클릭 이벤트를 처리하는 데 사용할 사용자 정의 ArrayAdapter와 클래스를 만들어야합니다.
public class MyCustomAdapter extends BaseAdapter implements ListAdapter {
private ArrayList<String> list = new ArrayList<String>();
private Context context;
public MyCustomAdapter(ArrayList<String> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int pos) {
return list.get(pos);
}
@Override
public long getItemId(int pos) {
return list.get(pos).getId();
//just return 0 if your list items do not have an Id variable.
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.my_custom_list_layout, null);
}
//Handle TextView and display string from your list
TextView listItemText = (TextView)view.findViewById(R.id.list_item_string);
listItemText.setText(list.get(position));
//Handle buttons and add onClickListeners
Button deleteBtn = (Button)view.findViewById(R.id.delete_btn);
Button addBtn = (Button)view.findViewById(R.id.add_btn);
deleteBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something
list.remove(position); //or some other task
notifyDataSetChanged();
}
});
addBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something
notifyDataSetChanged();
}
});
return view;
}
}
마지막으로, 활동에서 사용자 정의 ArrayAdapter 클래스를 인스턴스화하고이를 listview로 설정할 수 있습니다.
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_activity);
//generate list
ArrayList<String> list = new ArrayList<String>();
list.add("item1");
list.add("item2");
//instantiate custom adapter
MyCustomAdapter adapter = new MyCustomAdapter(list, this);
//handle listview and assign adapter
ListView lView = (ListView)findViewById(R.id.my_listview);
lView.setAdapter(adapter);
}
희망이 있습니다.
무엇 CursorLoader를 사용하고 싶습니까? –
return list.get (pos) .getId(); --- 'getId()'메서드를 해결할 수 없습니다. –
@ TahaKörkem은 "return list.get (pos) .getId()"를 "return 0"으로 바꿉니다. 목록 항목에 Id 속성이없는 경우 getId() 메서드는 유용하지 않습니다. – adam83
- 1. 각 ListView 행에 대한 삭제 버튼
- 2. 각 셀의 버튼이있는 javafx listview
- 3. 버튼이있는 ListView
- 4. 안드로이드의 다른 행에 대한 배경색이 다릅니다 ListView
- 5. 안드로이드의 Flipper 및 ListView
- 6. ListView 및 버튼이있는 Android 레이아웃
- 7. 런타임에 ListView 행에 객체 추가
- 8. C# ListView 행에 아이콘 추가
- 9. Android : 각 ListView 행에 두 개의 GridView 추가
- 10. android listview 각 행에 확인란이 있습니다.
- 11. ListView (C#)의 각 행에 번호 매기기
- 12. 리스트 뷰 안드로이드의 각 행에 대한 버튼
- 13. 안드로이드의 ListView 및 활동 아키텍처
- 14. 안드로이드의 각 목록 항목에 viewpager가있는 listview
- 15. 각 행에 두 개의 편집 텍스트가있는 ListView
- 16. 삭제 버튼이있는 TreeViewItem 삭제
- 17. 삭제 버튼이있는 스타일 목록
- 18. 각 행에 대체 항목이있는 Android listview
- 19. XLSX의 각 행에 체크 박스를 추가 한 다음 업로드시 삭제
- 20. 버튼이있는 ListView OnClickListener?
- 21. Android : ListView는 각 행에 그라데이션 추가
- 22. 안드로이드의 ListView 및 배열 어댑터
- 23. AppleScriptObjC의 각 테이블 행에 대한 삭제 버튼
- 24. Android 스 와이프 ListView - 내부 버튼이있는 항목 삭제
- 25. xaml의 각 행에 EventToCommand 추가
- 26. 각 DataGrid 행에 버튼 추가
- 27. 각 행에 html 버튼이있는 gridview가있는 웹 페이지의 문제점
- 28. 삭제 행하기 전에 각 행에 DELETE를
- 29. 안드로이드 - 버튼이있는 ListView
- 30. 두 개의 버튼이있는 listView (Android)
맞춤 목록보기 레이아웃을 사용하여 항목보기에 두 개의 버튼을 추가하고 해당 클릭 이벤트에 작업을 작성하십시오. – OMAK