首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启用ListView选择-安卓

启用ListView选择-安卓
EN

Stack Overflow用户
提问于 2012-02-08 18:47:06
回答 4查看 4.8K关注 0票数 0

我遇到了奇怪的问题,我不能点击我的列表视图...我用和以前一样的方式实现了它,但问题是它不起作用。

代码语言:javascript
运行
复制
listTags.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                listTags.setSelection(position);
                Toast.makeText(getParent(), "hello", Toast.LENGTH_LONG).show();
            }
        });

我正在扩展Activity类

我就是这样声明listview的

代码语言:javascript
运行
复制
listTags = (ListView) viewToLoad.findViewById(R.id.listPack);

这就是我在xml中做的事情。

代码语言:javascript
运行
复制
 <ListView
        android:id="@+id/listPack"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginBottom="5dip"
        android:layout_marginLeft="5dip"
        android:layout_marginRight="5dip"
        android:layout_weight="1" >
    </ListView>

这和任何地方一样正常,我不知道哪里出了问题,请帮我解决这个问题。

谢谢

听到适配器的代码

代码语言:javascript
运行
复制
adapter = new KeywordAdapter(getApplicationContext(), id,
                getLNApplication().getKeyworddetail());
listTags.setAdapter(adapter);

我的KeywordAdapter类

代码语言:javascript
运行
复制
public class KeywordAdapter extends BaseAdapter {

    public KeywordAdapter(Context context, int id, ArrayList<ArrayList<Keyword>> keywordList) {
        this.context = context;
        if (id >= keywordList.size()) {
            keyWordList = new ArrayList<Keyword>();
        } else
            keyWordList = keywordList.get(id);
    }

    // Implemented methods for BaseAdpter

    public class ViewHolder {
        TextView tagName;
        //.... more code
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        View view = convertView;

        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.package_tag_details, null, true);
            holder = new ViewHolder();
            holder.tagName = (TextView) view.findViewById(R.id.tagName);
            //.... more code
            holder.layout = (LinearLayout) view
                    .findViewById(R.id.linearLayout1);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        holder.tagName.setText(keyWordList.get(position).getName());
        ArrayList<Integer> rank = keyWordList.get(position).getRank();


        @SuppressWarnings("unused")

        holder.tagRank1.setText(rank.get(position));


        //.... more code

        return view;
    }

    public void forceReload() {
        notifyDataSetChanged();

    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-08 19:41:28

您放置在listView中的项目是什么,将所有项目设置为android:focusable="false"

票数 1
EN

Stack Overflow用户

发布于 2012-02-08 18:58:22

只需在代码中更改以下内容即可。

代码语言:javascript
运行
复制
listTags = (ListView)findViewById(R.id.listPack);

你确定android:layout_width支持"match_parent“吗?请查看控制台。希望这对你有帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-02-08 19:24:20

我没有看到您设置适配器,即listTags.setAdapter(?);

代码语言:javascript
运行
复制
    Try this code (works for me):

    // MainActivity

    public class MainActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

           final ListView listTags = (ListView) findViewById(R.id.listPack);
           listTags.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, mStrings));
           listTags.setOnItemClickListener(new OnItemClickListener() {

               @Override
               public void onItemClick(AdapterView<?> parent, View view,
                       int position, long id) {
                   listTags.setSelection(position);
    //               Toast.makeText(getParent(), "hello", Toast.LENGTH_LONG).show();
               }
           });



        }


         private String[] mStrings = {

            "Comte", "Coolea", "Cooleney", "Coquetdale", "Corleggy", "Cornish Pepper",
            "Cotherstone", "Cotija", "Cottage Cheese", "Cottage Cheese (Australian)",
            "Cougar Gold", "Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
            "Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche", "Crescenza",
            "Croghan", "Crottin de Chavignol", "Crottin du Chavignol", "Crowdie", "Crowley",
            "Cuajada", "Curd", "Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
           };

    // Main xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />

        <ListView
            android:id="@+id/listPack"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginBottom="5dip"
            android:layout_marginLeft="5dip"
            android:layout_marginRight="5dip"
            android:layout_weight="1" >
        </ListView>

            </LinearLayout>

    // list_item.xml // layout

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dp"
        android:textSize="16sp" >
    </TextView>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9191796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档