简单列表项多选不选项

时间:2014-04-21 03:35:35

标签: android list

我创建了一个数组列表并将其显示在列表视图中,其中包含简单的列表项多选项,但我无法检查或勾选列表中的项目,当我单击项目时没有任何反应。请检查下面的代码并告诉我我做错了什么。

package com.example.arrays;

import java.util.Random;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemLongClickListener;

public class MainActivity extends Activity {
ListView showList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView show = (TextView)findViewById(R.id.txtShow);
    final Random generate = new Random();
    showList = (ListView)findViewById(R.id.listView1);
    final String[] myAttraction = new String[4];
    myAttraction[0]= "Walter Sisulu National Botanical Garden ";
    myAttraction[1]= "Coca-Cola Dome";
    myAttraction[2]= "Promusica Theatre";
    myAttraction[3]= "Unisa Science Campus";
    Button arrays = (Button)findViewById(R.id.button1);
    arrays.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {


            /*int random = generate.nextInt(4);
            String display = myAttraction[random];
            show.setText(display);*/

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice, myAttraction);
            showList.setAdapter(adapter);

        }
    });
    showList.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(getBaseContext(), "long clicked pos: " + pos, Toast.LENGTH_LONG).show();

            return true;
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

 }

4 个答案:

答案 0 :(得分:2)

像这样添加OnItemClickListener来检查/取消选中用户点击某个项目时的CheckedTextView

showList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // change the checkbox state
            CheckedTextView checkedTextView = ((CheckedTextView)view);
            checkedTextView.setChecked(!checkedTextView.isChecked());
        }
    });

答案 1 :(得分:0)

将代码更改为以下内容....

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice, myAttraction);
            showList.setAdapter(adapter);

 arrays.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {


            /*int random = generate.nextInt(4);
            String display = myAttraction[random];
            show.setText(display);*/
        }
    });

 showList.setOnItemClickListener(new OnItemClickListener() {

        public boolean onItemClick(AdapterView<?> arg0, View arg1, int pos, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(getBaseContext(), "long clicked pos: " + pos, Toast.LENGTH_LONG).show();

            return true;
        }
    });

答案 2 :(得分:0)

将列表的choiceMode属性设置为multipleChoice。我正在我的应用程序中以这种方式实现多选列表,它肯定有效。

答案 3 :(得分:0)

更改此

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_multiple_choice, myAttraction);
  showList.setAdapter(adapter);

对此

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_multiple_choice, myAttraction);
  showList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  showList.setAdapter(adapter);

如果您具有ListView并选择了simple_list_item_multiple_choice并且无法与复选框进行交互,则只需添加此行。

YourListViewName.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);