1
복수 선택을 처리하고 클릭을 감지 할 수있는 ListView
을 구현하고 싶습니다. 각 목록에 체크 박스가 포함되기를 원합니다. 확인란을 클릭하면 선택 사항을 기억하게되고, 줄의 텍스트를 클릭하면 다른 활동으로 이동하게됩니다.다중 선택 목록보기
어떻게하면됩니까?
복수 선택을 처리하고 클릭을 감지 할 수있는 ListView
을 구현하고 싶습니다. 각 목록에 체크 박스가 포함되기를 원합니다. 확인란을 클릭하면 선택 사항을 기억하게되고, 줄의 텍스트를 클릭하면 다른 활동으로 이동하게됩니다.다중 선택 목록보기
어떻게하면됩니까?
Adapter
으로 ListView
을 만들어야합니다.
private class MySecondAdapter extends ArrayAdapter<MiniTask>
{
private ArrayList<MiniTask> list;
public MySecondAdapter(Context context, int textViewResourceId, ArrayList<MiniTask> miniTaskList)
{
super(context, textViewResourceId, miniTaskList);
this.list = new ArrayList<MiniTask>();
this.list.addAll(miniTaskList);
}
public View getView(final int position, View convertView, ViewGroup parent)
{
miniTask = miniTaskList.get(position);
ViewHolder holder = new ViewHolder();
{
LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.check_list_item_new, null);
holder.title = (TextView) convertView.findViewById(R.id.tvItemTitle);
holder.commentsPicturesButton = (ImageView) convertView.findViewById(R.id.iAddCommetOrPicture);
holder.commentsPicturesButton.setTag(position);
holder.commentsPicturesButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(getApplicationContext(), PicturesAndCommentsActivity.class);
intent.putExtra(TasksListActivity.KEY_ID, task.getId());
intent.putExtra("mini_task_text", miniTask.getTitle());
startActivity(intent);
}
});
holder.selected = (CheckBox) convertView.findViewById(R.id.cbCheckListItem);
holder.selected.setTag(position);
holder.selected.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
{
Log.d(TAG, "pressed the checkbox: " + v.getId() + " in position: " + position + " tag: " +v.getTag() +" and item from array: " + miniTaskList.get(position));
CheckBox checkbox = (CheckBox) v;
miniTaskList.get(position).setSelected(checkbox.isChecked());
numOfCheckedMiniTasks = 0;
for(int i=0;i<miniTaskList.size();i++)
{
miniTask = miniTaskList.get(i);
if(miniTask.isSelected())
{
numOfCheckedMiniTasks ++;
}
}
int percent = (int)(numOfCheckedMiniTasks * 100.0f)/miniTaskList.size();
Log.d(TAG, "the percentage is: " +percent);
tasksRepository.get(tasksRepository.indexOf(task)).setMiniTasksPercentageComplete(percent);
}
}
});
}
holder.title.setText(miniTask.getTitle());
holder.selected.setChecked(miniTask.isSelected());
return convertView;
}
과 ViewHolder
:
static class ViewHolder
{
TextView title;
CheckBox selected;
ImageView commentsPicturesButton;
}
및 행 레이아웃 :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/try2"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/cbCheckListItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:background="@drawable/checkbox_checklist_selector"
android:button="@drawable/checkbox_checklist_selector" />
<TextView
android:id="@+id/tvItemTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingRight="10dp"
android:paddingTop="13dp"
android:text="@string/checklist_item_string"
android:textColor="@color/my_darker_gray" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:paddingTop="6.5dp" >
<ImageView
android:id="@+id/iAddCommetOrPicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:contentDescription="@drawable/comment_or_photo_icon"
android:src="@drawable/comment_or_photo_icon" />
</RelativeLayout>
여기에 체크 박스 및 클릭 가능한 항목 목록보기의 코드는 @Emil_Adz 어떤 타입의 의미 MiniTask – galvan
그것은 내가 목록을 채우는 데 사용되는 개체의, 당신은 할 수 repl 문자열로 에이스. –
내 XML이 이렇게되어야합니까? <이미지 뷰 로이드 : ID = "@ + ID/browser_image" 로이드 : layout_width = "40dp" 로이드 : layout_height = "40dp" 로이드 : SRC = "@ 묘화/폴더"/> <텍스트 뷰 로이드 : ID = "@ + ID/browser_file_name" 로이드 : layout_width = "android : text_size = "17sp"/> –
galvan