1

リストビューから選択した値を返したかったのですが、デフォルトのリストビューを使用すればできますが、リストビューをカスタマイズして、imageview、ratingbarm、およびいくつかのテキストビューを取得しました。ユーザーが選択した後、トーストでタイトルの値を返すにはどうすればよいですか? 以下は私のコードです:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.appslist);

        list=(ListView)findViewById(R.id.lvApps);        


        SoapObject Request = new SoapObject (NAMESPACE, METHOD_NAME);
    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(Request);

        AndroidHttpTransport aht = new AndroidHttpTransport(URL);

        try
        {
            aht.call(SOAP_ACTION, soapEnvelope);
            SoapObject resultString = (SoapObject) soapEnvelope.getResponse();          

            String[] strTitle = new String[resultString.getPropertyCount()];
            String[] strDeveloper = new String[resultString.getPropertyCount()];
            String[] strRating = new String[resultString.getPropertyCount()];
            String[] strLogo = new String[resultString.getPropertyCount()];         

            for(int i =0; i<resultString.getPropertyCount(); i++)
            {
                SoapObject array = (SoapObject) resultString .getProperty(i);
                strTitle[i] = array.getProperty(1).toString();  //get title  
                strDeveloper[i] = array.getProperty(3).toString(); //get developer
                strRating[i] = array.getProperty(4).toString(); //get rating
                strLogo[i] = array.getProperty(5).toString();   //get photo             
            }
            adapter=new AppsListAdapter(this, strTitle, strDeveloper, strRating, strLogo);
            list.setAdapter(adapter);

            list.setOnItemClickListener(new OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    Object GetLabel = list.getItemAtPosition(arg2);
                          //Toast here
                    Toast.makeText(getApplicationContext(), GetLabel.toString(), Toast.LENGTH_SHORT).show();                        

            });
        }

        catch(Exception e)
        {

        }
    }
}
4

2 に答える 2

1

1つのアイテムにすべてのデータのモデル(Bean)を作成する必要があります。つまり、データをオブジェクトにラップし、そのモデルの配列を作成して、その配列をアダプターに送信します。

しかし、今のところ、あなたのタスクを実行するためのいくつかの方法があります:

1-特定のタイトルを取得するためにstrTitleのインデックスとして使用できる選択したアイテムの位置があります。

文字列タイトル=strTitle[position]; ///nullと長さを入れて安全にするかどうかをチェックできると思う場合

2-コールバックにリストのビューがありますpublicvoidonItemClick(AdapterView arg0、View arg1、int arg2、long arg3)findViewbyidを使用して、そのビューからタイトルを持つテキストビューを取得できます

String s =(String)((TextView)view.findViewById(R.id.title))。getText(); //ビューが選択された行ビュー

また

TextView txt =(TextView)arg0.getChildAt(position-lv.firstVisiblePosition())。findViewById(R.id.mylistviewtextview); //arg0は親ビューですStringkeyword= txt.getText()。toString();

3-3-

于 2012-05-28T12:27:58.687 に答える
1

これを試して

lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View v, int position,
                    long arg3) {
                // TODO Auto-generated method stub
                HashMap<String, String> o = (HashMap<String, String>) mylist
                        .get(position);
                Log.v("o", o + "n");
                String d = o.get("the string value you want to retrieve");
                Log.v("Tapped ", d);

            }
        });

ここで、「lv」はリストビューで、mylist は配列リストです

于 2012-05-28T12:32:32.670 に答える