android - 自定义 Listview - 我在哪里设置我的点击处理程序

标签 android listview onitemclick

我有一个带有 ListView 适配器类的自定义 ltView,我有一个代码 stub ,它填充了我的 lsit View 的 4 行。 xml 等看起来不错, Activity 本身构建正常,但我似乎无法在不导致错误的情况下插入处理程序。

这是我目前的代码。

游戏总结

public class GamesSummary extends ListActivity {
    private ProgressDialog m_ProgressDialog = null;
    private ArrayList<MyGamesList> myGamesArrayList = null;
    private MyGamesAdapter myGames_adapter;
    private Runnable viewGames;

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

        myGamesArrayList = new ArrayList<MyGamesList>();
        this.myGames_adapter = new MyGamesAdapter(this, R.layout.row,
                myGamesArrayList);
        setListAdapter(this.myGames_adapter);

        // set Item click listener for list view

        viewGames = new Runnable() {
            @Override
            public void run() {
                getMyGames();
            }
        };
        // Start the 'waiting' dialog thread
        Thread thread = new Thread(null, viewGames, "MagentoBackground");
        thread.start();
        m_ProgressDialog = ProgressDialog.show(GamesSummary.this,
                "Please wait...", "Retrieving data ...", true);
    }

MyGamesAdapter

    private class MyGamesAdapter extends ArrayAdapter<MyGamesList> {

        private ArrayList<MyGamesList> items;

        public MyGamesAdapter(Context context, int textViewResourceId,
                ArrayList<MyGamesList> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.row, null);
            }
            MyGamesList o = items.get(position);
            if (o != null) {

            }
            return v;
        }
    }

填充列表

    private void getMyGames() {
        /*
         * Add the users current games using the myGames class. example below of
         * stubb code use
         */
        try {
            myGamesArrayList = new ArrayList<MyGamesList>();
            MyGamesList myGame1 = new MyGamesList();
            myGame1.setLeagueName("game1");
            myGame1.setLeaguePoints("36");
            myGame1.setLeaguePos("26");
            myGame1.setLeagueRound("5");
            MyGamesList myGame2 = new MyGamesList();
            myGame2.setLeagueName("game2");
            myGame2.setLeaguePoints("36");
            myGame2.setLeaguePos("26");
            myGame2.setLeagueRound("5");
            myGamesArrayList.add(myGame1);
            myGamesArrayList.add(myGame2);
            Thread.sleep(2000);
            Log.i("ARRAY", "" + myGamesArrayList.size());
        } catch (Exception e) {
            Log.e("BACKGROUND_PROC", e.getMessage());
        }
        runOnUiThread(returnRes);
    }

returnRes Runnable

    private Runnable returnRes = new Runnable() {
        @Override
        public void run() {
            if (myGamesArrayList != null && myGamesArrayList.size() > 0) {
                myGames_adapter.notifyDataSetChanged();
                for (int i = 0; i < myGamesArrayList.size(); i++)
                    myGames_adapter.add(myGamesArrayList.get(i));
            }
            m_ProgressDialog.dismiss();
            myGames_adapter.notifyDataSetChanged();
        }
    };
}

最佳答案

您的 ListView 的点击处理程序将像这样工作:

getListView().setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});

在您的 xml 布局中,不要忘记 id:

             <ListView
                android:id="@android:id/list"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:dividerHeight="0dp"
                android:divider="#ffffff"
                android:clickable="true"
                android:cacheColorHint="#00000000"
                android:fadingEdge="none"
                android:fastScrollEnabled="false"
                android:footerDividersEnabled="false"
                android:headerDividersEnabled="false"
                android:smoothScrollbar="true"
                />

关于android - 自定义 Listview - 我在哪里设置我的点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747699/

相关文章:

android - 如何在 Nexus Player 上启用 USB 调试? (安卓电视)

java - 关于 android java 中字符串比较的 Lint 警告

java - 安卓 : Make sure the Cursor is initialized correctly

C# ListView with CheckBoxes,多选行时自动选中复选框

java - onItemClick 中的 parent 和 view 是什么?

android - 我希望我的应用程序位于 "open with"浏览器部分

android - Retrofit 的@EncodedPath 已弃用,是否有其他替代方案?

android - 使用 ListView 的问题

android - 在一项 Activity 中使用多个 onItemClick .. "Duplicate method"错误?

android - 如何在自定义 ListView 上实现点击监听器