问题描述
解决方案
你可以在数据源中增加一个字段,代表是否显示复选框,长按时,将次标记置为true,然后在getview中判断该标记,处理界面
解决方案二:
package com.example.day01;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener,OnItemLongClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Activity对象包含一个window窗口
//这句代码的含义是将一些view添加到
//activity对应的window窗口上
//这个方法底层的实现?
//1.根据context找到对应的资源文件
//getResources().getLayout(R.layout.activity_main);
//2.底层借助pull解析器解析xml
//3.底层借助反射构建xml中元素的对象
//4.将xml对应的view元素对象添加到activity对应的窗口上
setContentView(R.layout.activity_main);
//1.ListView (View)
ListView lsv=(ListView)
findViewById(R.id.lsv01);
//2.Adapter (ArrayAdapter)
//2.1 Context
Context context=this;
//2.2 item view 对应的资源
//int textViewResourceId=R.layout.list_item_1;
int textViewResourceId=
android.R.layout.simple_list_item_checked;
//2.3 item data
String[] objects={"关羽","张飞","赵云","黄忠","马超"};
ArrayAdapter adapter=
new ArrayAdapter(
context,
textViewResourceId,//item view 的资源文件
objects);
//3.关联Adapter
lsv.setAdapter(adapter);//ListAdapter
//此时当listview在显示数据时,
//底层会调用adapter的getView
//方法获得item
//4.添加监听器
lsv.setOnItemClickListener(this);
//长按事件
lsv.setOnItemLongClickListener(this);
}
/**点击ListView的某个item时会自动回调此方法*/
@Override
public void onItemClick(
AdapterView<?> parent, //ListView
View view,//TextView
int position,
long id) {
Log.i("TAG","parent="+parent);
Log.i("TAG","view="+view);
Log.i("TAG","position="+position);
//在此方法中以toast的形式
//显示点击的item的内容
//1.根据postion获得item对象的内容
String item=(String)
parent.getItemAtPosition(position);
//2.显示
Toast.makeText(this,
item, 0).show();
}
/**长按listView的某个Item时会自动执行此方法*/
@Override
public boolean onItemLongClick(
AdapterView<?> parent,
View view,
int position, long id) {
Toast.makeText(this,"可以多选了",0).show();
//设置ListView的选择模式为多选模式
((ListView)parent).
setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
return true;//返回为true表示事件已处理,后续无需再处理
}
}
解决方案三:
package com.example.day01;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener,OnItemLongClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Activity对象包含一个window窗口
//这句代码的含义是将一些view添加到
//activity对应的window窗口上
//这个方法底层的实现?
//1.根据context找到对应的资源文件
//getResources().getLayout(R.layout.activity_main);
//2.底层借助pull解析器解析xml
//3.底层借助反射构建xml中元素的对象
//4.将xml对应的view元素对象添加到activity对应的窗口上
setContentView(R.layout.activity_main);
//1.ListView (View)
ListView lsv=(ListView)
findViewById(R.id.lsv01);
//2.Adapter (ArrayAdapter)
//2.1 Context
Context context=this;
//2.2 item view 对应的资源
//int textViewResourceId=R.layout.list_item_1;
int textViewResourceId=
android.R.layout.simple_list_item_checked;
//2.3 item data
String[] objects={"关羽","张飞","赵云","黄忠","马超"};
ArrayAdapter adapter=
new ArrayAdapter(
context,
textViewResourceId,//item view 的资源文件
objects);
//3.关联Adapter
lsv.setAdapter(adapter);//ListAdapter
//此时当listview在显示数据时,
//底层会调用adapter的getView
//方法获得item
//4.添加监听器
lsv.setOnItemClickListener(this);
//长按事件
lsv.setOnItemLongClickListener(this);
}
/**点击ListView的某个item时会自动回调此方法*/
@Override
public void onItemClick(
AdapterView<?> parent, //ListView
View view,//TextView
int position,
long id) {
Log.i("TAG","parent="+parent);
Log.i("TAG","view="+view);
Log.i("TAG","position="+position);
//在此方法中以toast的形式
//显示点击的item的内容
//1.根据postion获得item对象的内容
String item=(String)
parent.getItemAtPosition(position);
//2.显示
Toast.makeText(this,
item, 0).show();
}
/**长按listView的某个Item时会自动执行此方法*/
@Override
public boolean onItemLongClick(
AdapterView<?> parent,
View view,
int position, long id) {
Toast.makeText(this,"可以多选了",0).show();
//设置ListView的选择模式为多选模式
((ListView)parent).
setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
return true;//返回为true表示事件已处理,后续无需再处理
}
}