0

サーバーから値を取得し、サーバーから応答を取得しようとしています。サーバーから応答された詳細をリストビューに表示する必要があります。私もそれを達成しましたが、onitemclickプロセスではリストビューの最初の行のみがクリックアクションを実行しますが残りの行に対して実行しない、どうすればそれを達成できますか、選択している行と項目が何であれ、コードで処理する必要があります。参照用のコードは次のとおりです........

    public void userInterface() throws JSONException 
    {
        if(json_user.get(0) != null)
        {
            downloadList1 = (ListView)findViewById(R.id.lvinbox);
            populateData();
            downloadList1.setOnItemClickListener(new OnItemClickListener() 
            {
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
                {
                    // TODO Auto-generated method stub
                    fma=(TextView)findViewById(R.id.src);
                    st=(TextView)findViewById(R.id.sub);
                    fma.setOnClickListener(new OnClickListener() 
                    {
                        public void onClick(View v) 
                        {
                            // TODO Auto-generated method stub
                                                            String fm=fma.getText().toString();
                            String s=st.getText().toString();
                            Intent m = new Intent(getApplicationContext(), InActivity.class);
                            m.putExtra("f", fm);
                            m.putExtra("s", s);
                            startActivity(m);
                        }
                    });
                st.setOnClickListener(new OnClickListener() 
                    {
                        public void onClick(View v) 
                        {
                            // TODO Auto-generated method stub
                            String fm=fma.getText().toString();
                            String s=st.getText().toString();
                            Intent m = new Intent(getApplicationContext(), InActivity.class);
                            m.putExtra("f", fm);
                            m.putExtra("s", s);
                            startActivity(m);
                        }
                    });
                }
            });
        }
        else
        {
            Toast.makeText(getApplicationContext(),"Empty",  Toast.LENGTH_LONG).show();
            finish();
            Intent menu = new Intent(getApplicationContext(), MenActivity.class);
            menu.putExtra("username", dest);
            startActivity(menu);
        }
    }
    public void populateData() throws JSONException 
    {
        resultVector = new Vector<ListDataItemInbox>();


        int len = json_user.length();
        System.out.println("length--------------------->"+len);
        for(int i=0;i<len;i++)
        {
            JSONObject obj=json_user.getJSONObject(i);

            listData = new ListDataItemInbox();
            listData.sets(obj.getString(KEY_S));
            listData.setd(obj.getString(KEY_D));
            resultVector.add(listData);

            myHandler.post(myRunnable);

        }
    }
    private Handler myHandler = new Handler();
    private Runnable myRunnable = new Runnable() 
    {
        public void run() 
        {
            customListAdapter = new ListViewAdapterInbox(InActivity.this);
            customListAdapter.setResultsData(resultVector);
            downloadList1.setAdapter(customListAdapter);
        }
    };
4

1 に答える 1

0

このようなことができます。リスト アダプタ クラスで ArrayList を作成する

ArrayList<Integer> selectedIds = new ArrayList<Integer>();

同じクラスにもこのメソッドを作成します。

public void toggleSelected(Integer position){
            selectedIds.clear();
            selectedIds.add(position);
        }

リストビューのアイテムをクリックすると、そのアイテムの位置がこのメソッドに渡されます。getView メソッド内で、テキストを設定する前にチェックを設定します。このようなもの..

if (selectedIds.contains(position)){
                  ----- your code ----
              }else{
                 ----- your code ----
              }

選択した位置でのみ操作を実行します。それを試してみてください。!

于 2012-12-18T11:46:00.040 に答える