Android ListView复选框仅单击一次即可选中多个复选框
我试图在我的Android ListView复选框仅单击一次即可选中多个复选框,android,listview,checkbox,checkboxlist,Android,Listview,Checkbox,Checkboxlist,我试图在我的列表视图中使用复选框,并使用阵列适配器。当我在列表中选择任意复选框时,将自动以随机顺序选择多个条目。谁能告诉我如何避免这种情况 以下是我的代码供您参考: 公共类SearchListAdapterQ2扩展了BaseAdapter{ int layoutId; ArrayList<SearchListView> searchresultList = new ArrayList<SearchListView>(); public static int compan
列表视图中使用复选框
,并使用阵列适配器
。当我在列表中选择任意复选框时,将自动以随机顺序选择多个条目。谁能告诉我如何避免这种情况
以下是我的代码供您参考:
公共类SearchListAdapterQ2扩展了BaseAdapter{
int layoutId;
ArrayList<SearchListView> searchresultList = new ArrayList<SearchListView>();
public static int companyCpsId;
public static String companyCpsType = "", search_companyName = "",
search_countryName = "", handShakeStatus = "";
public static String handShakeCPSName = "";
public static boolean searchListAdapter_Q2 = false;
SharedPreferences sharedpreferences;
boolean markfavStatus = false;
ListView searchResults_listView;
Context context;
public SearchListAdapterQ2(Context context, int layoutId,
ArrayList<SearchListView> searchresultList,
ListView searchResults_listView) {
// TODO Auto-generated constructor stub
this.layoutId = layoutId;
this.searchresultList = searchresultList;
Log.i("inside searchListAdapter", "inside searchListAdapter");
this.context = context;
sharedpreferences = context.getSharedPreferences("MyPrefs",
Context.MODE_PRIVATE);
this.searchResults_listView = searchResults_listView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
Log.i("searchresultList",
"searchresultList: " + searchresultList.size());
return searchresultList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return searchresultList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder1 holder1;
// LayoutInflater inflater = (LayoutInflater)
// context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
char color;
String text = "";
String address = "";
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.qq_searchlist_repeat_items,
parent, false);
holder1 = new ViewHolder1();
holder1.companyName_textView = (TextView) convertView
.findViewById(R.id.companyName_textView);
holder1.companyLogo_textView = (TextView) convertView
.findViewById(R.id.companyLogo_textView);
holder1.companyAddress_textView = (TextView) convertView
.findViewById(R.id.companyAddress_textView);
holder1.handShakeIcon_imageView = (ImageView) convertView
.findViewById(R.id.handShakeIcon_imageView);
holder1.favouritesIcon_imageView = (ImageView) convertView
.findViewById(R.id.favouritesIcon_imageView);
holder1.referIcon_imageView = (ImageView) convertView
.findViewById(R.id.referIcon_imageView);
holder1.sendEnquiry_imageView = (ImageView) convertView
.findViewById(R.id.sendEnquiry_imageView);
holder1.icons_searchResultsPage_relLayout = (RelativeLayout) convertView
.findViewById(R.id.icons_searchResultsPage_relLayout);
holder1.chckbx1 = (CheckBox) convertView.findViewById(R.id.chckbx1);
if (SearchListActivity_Q2.broadcastMode) {
Log.i("icons_searchResultsPage_relLayout is visible",
"icons_searchResultsPage_relLayout is visible");
holder1.icons_searchResultsPage_relLayout
.setVisibility(View.GONE);
holder1.chckbx1.setVisibility(View.VISIBLE);
} else {
holder1.icons_searchResultsPage_relLayout
.setVisibility(View.VISIBLE);
holder1.chckbx1.setVisibility(View.GONE);
}
convertView.setTag(holder1);
} else {
holder1 = (ViewHolder1) convertView.getTag();
}
holder1.id = position;
search_companyName = searchresultList.get(position).getCpsName();
search_countryName = searchresultList.get(position).getCountryName();
try {
String ssearch_companyName = URLDecoder.decode(search_companyName,
"UTF-8");
holder1.companyName_textView.setText(ssearch_companyName);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (searchresultList.get(position).getCpsName().contains(" ")) {
String[] splitText = searchresultList.get(position).getCpsName()
.split("\\s+");
char a = splitText[0].charAt(0);
char b = splitText[1].charAt(0);
text = String.valueOf(a) + String.valueOf(b);
color = b;
} else {
text = searchresultList.get(position).getCpsName().substring(0, 1);
color = searchresultList.get(position).getCpsName().charAt(1);
}
holder1.companyLogo_textView.setText(text.toUpperCase());
if (searchresultList.get(position).getCpsAddress().isEmpty()) {
address = searchresultList.get(position).getCountryName();
} else {
if (searchresultList.get(position).getCpsAddress().length() > 1) {
address = searchresultList.get(position).getCpsAddress() + ", "
+ searchresultList.get(position).getCountryName();
} else {
address = searchresultList.get(position).getCountryName();
}
}
holder1.companyAddress_textView.setText(address);
holder1.companyName_textView
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
searchListAdapter_Q2 = true;
companyCpsId = searchresultList.get(position)
.getCpsId();
Log.i("$$$ companyCpsId", "companyCpsId" + companyCpsId);
companyCpsType = searchresultList.get(position)
.getCpsType();
Intent intent = new Intent(context,
CompanyProfile_Activity.class);
context.startActivity(intent);
}
});
holder1.referIcon_imageView
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
holder1.sendEnquiry_imageView
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<Q2_SendEnquiryList> sendEnquiry = new ArrayList<Q2_SendEnquiryList>();
sendEnquiry.add(new Q2_SendEnquiryList(searchresultList
.get(position).getCpsId(), searchresultList
.get(position).getCpsName()));
sendEnquiry.add(new Q2_SendEnquiryList(1, "abcdefgh"));
sendEnquiry.add(new Q2_SendEnquiryList(2, "abcdefg"));
sendEnquiry.add(new Q2_SendEnquiryList(3, "abcdef"));
sendEnquiry.add(new Q2_SendEnquiryList(4, "abcde"));
sendEnquiry.add(new Q2_SendEnquiryList(5, "abcd"));
sendEnquiry.add(new Q2_SendEnquiryList(6, "abc"));
sendEnquiry.add(new Q2_SendEnquiryList(7, "ab"));
Intent intent = new Intent(context,
Q2_SendEnquiryActivity.class);
intent.putParcelableArrayListExtra("sendEnquiry",
sendEnquiry);
context.startActivity(intent);
}
});
holder1.handShakeIcon_imageView
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
companyCpsId = searchresultList.get(position)
.getCpsId();
handShakeCPSName = searchresultList.get(position)
.getCpsName();
handShakeStatus = searchresultList.get(position)
.getHandShakeStatus();
ConstantVariables.handShakeFromAdapter = true;
if (sharedpreferences.getInt("userId_sp", 0) != 0) {
if (sharedpreferences.getInt("profileActiveStatus",
0) > 0) {
if (sharedpreferences.getInt("organizationId",
0) != 0) {
if (handShakeStatus.equalsIgnoreCase("d")) {
ConstantVariables
.handShakeRequest(
context,
companyCpsId,
0,
ConstantVariables.handShakeFromAdapter,
searchResults_listView,
position);
} else if (handShakeStatus
.equalsIgnoreCase("p")) {
ConstantVariables
.handShakeRequestAccept(
context,
companyCpsId,
1,
ConstantVariables.handShakeFromAdapter,
searchResults_listView,
position,
handShakeCPSName);
}
} else {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
context);
// Setting Dialog Title
// alertDialog.setTitle("Please Add Company");
// Setting Dialog Message
alertDialog
.setMessage("Please add your company details");
// Setting Positive "Yes" Button
alertDialog
.setPositiveButton(
"Add",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
Intent intent = new Intent(
context,
Profile_Activity.class);
context.startActivity(intent);
}
});
// Setting Negative "NO" Button
alertDialog
.setNegativeButton(
"Later",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
} else {
ConstantVariables
.requestEmailVerification(context);
}
} else {
ConstantVariables.requestLogin(context);
}
}
});
holder1.favouritesIcon_imageView
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return convertView;
}
static class ViewHolder1 {
TextView companyName_textView, companyAddress_textView,
companyLogo_textView;
ImageView handShakeIcon_imageView, favouritesIcon_imageView,
referIcon_imageView, sendEnquiry_imageView;
CheckBox chckbx1;
int id;
RelativeLayout icons_searchResultsPage_relLayout;
}
intlayoutid;
ArrayList searchresultList=新建ArrayList();
公共静态int companyCpsId;
公共静态字符串companycptype=“”,搜索\u companyName=“”,
搜索_countryName=“”,handShakeStatus=“”;
公共静态字符串握手ecpsname=“”;
公共静态布尔searchListAdapter_Q2=false;
SharedReferences SharedReferences;
布尔markfavStatus=false;
ListView搜索结果\u ListView;
语境;
public SearchListAdapterQ2(上下文、int layoutId、,
ArrayList searchresultList,
ListView搜索结果(列表视图){
//TODO自动生成的构造函数存根
this.layoutId=layoutId;
this.searchresultList=searchresultList;
Log.i(“内部searchListAdapter”、“内部searchListAdapter”);
this.context=上下文;
SharedReferences=context.getSharedReferences(“MyPrefs”,
上下文。模式(私人);
this.searchResults\u listView=searchResults\u listView;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
Log.i(“searchresultList”,
searchresultList:“+searchresultList.size());
返回searchresultList.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回searchresultList.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图保持器1保持器1;
//LayoutInflater充气机=(LayoutInflater)
//getSystemService(context.LAYOUT\u充气机\u服务);
炭色;
字符串文本=”;
字符串地址=”;
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
if(convertView==null){
convertView=充气机。充气(R.layout.qq\u搜索列表\u重复项目,
父母,假);
holder1=新视图holder1();
holder1.companyName_textView=(textView)convertView
.findviewbyd(R.id.companyName_textView);
holder1.companyLogo\u textView=(textView)convertView
.findViewById(R.id.companyLogo\u textView);
holder1.companyAddress_textView=(textView)convertView
.findViewById(R.id.companyAddress_textView);
holder1.handShakeIcon_imageView=(imageView)convertView
.findviewbyd(R.id.handShakeIcon\u imageView);
holder1.FavoriteSicon_imageView=(imageView)convertView
.findViewById(R.id.FavoriteSicon_imageView);
holder1.referIcon\u imageView=(imageView)convertView
.findViewById(R.id.referIcon\U imageView);
holder1.SendInquiry\u imageView=(imageView)convertView
.findviewbyd(R.id.send\u imageView);
holder1.icons\u searchResultsPage\u relLayout=(RelativeLayout)convertView
.findViewById(R.id.icons\u searchresults页面\u relLayout);
holder1.chckbx1=(复选框)convertView.findViewById(R.id.chckbx1);
if(SearchListActivity_Q2.广播模式){
Log.i(“图标\u搜索结果页面\u布局可见”,
“图标\搜索结果页面\布局可见”);
holder1.icons\u searchresults页面\u rellayou布局
.setVisibility(View.GONE);
holder1.chckbx1.setVisibility(View.VISIBLE);
}否则{
holder1.icons\u searchresults页面\u rellayou布局
.setVisibility(View.VISIBLE);
holder1.chckbx1.setVisibility(View.GONE);
}
convertView.setTag(保持器1);
}否则{
holder1=(ViewHolder1)convertView.getTag();
}
holder1.id=位置;
search_companyName=searchresultList.get(position.getCpsName();
search_countryName=searchresultList.get(position.getCountryName();
试一试{
字符串ssearch\u companyName=URLDecover.decode(搜索\u companyName,
“UTF-8”);
holder1.companyName_textView.setText(ssearch_companyName);
}捕获(不支持的编码异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
if(searchresultList.get(position).getCpsName()包含(“”){
String[]splitText=searchresultList.get(position).getCpsName()
.split(\\s+);
字符a=拆分文本[0]。字符(0);
字符b=拆分文本[1]。字符(0);
text=String.valueOf(a)+String.valueOf(b);
颜色=b;
}否则{
text=searchresultList.get(位置).getCpsName().substring(0,1);
color=searchresultList.get(位置).getCpsName().charAt(1);
}
holder1.companyLogo_textView.setText(text.toUpperCase());
if(searchresultList.get(position.getCpsAddress().isEmpty()){
address=searchresultList.get(位置).getCountryName();
}否则{
if(searchresultList.get(position.getCpsAddress().length()>1){
address=searchresultList.get(位置).getCpsAddress()+“,”
+searchresultList.get(位置).getCountryName();
}否则{
address=searchresultList.get(位置).getCountryName();
}
}
holder1.companyAddress_textView.setText(地址);
holder1.companyName\u文本视图
.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
searchListAdapter_Q2=true;
companyCpsId=searchresultList.g
ArrayList<Integer> checkedPositions = new ArrayList<Integer>();
final Integer index = new Integer(position);
holder1.chckbx1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
// if checked, we add it to the list
checkedPositions.add(index);
} else if (checkedPositions.contains(index)) {
// else if remove it from the list (if it is present)
checkedPositions.remove(index);
}
}
});
// set the state of the checbox based on if it is checked or not.
holder1.chckbx1.setChecked(checkedPositions.contains(index));