第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android中的Listview中處理click事件?

如何在Android中的Listview中處理click事件?

紫衣仙女 2019-10-28 18:28:59
以下是我創(chuàng)建列表視圖的測試代碼,列表視圖成功顯示,但是單擊事件中有錯誤。我想創(chuàng)建一個向新活動發(fā)送硬編碼消息的意圖。但是,它顯示該行的錯誤Intent intent = new Intent(context, SendMessage.class);那么,問題是,我應(yīng)該為這堂課提供什么?另外,如何代替硬編碼輸出消息,如何捕獲列表視圖行中的數(shù)據(jù)并將其傳遞給新活動?例如BBB,AAA,R.drawable.tab1_hdpi第一行。謝謝。public class MainActivity extends Activity {    public final static String EXTRA_MESSAGE = "com.example.ListViewTest.MESSAGE";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ArrayList<ListEntry> members = new ArrayList<ListEntry>();         members.add(new ListEntry("BBB","AAA",R.drawable.tab1_hdpi));        members.add(new ListEntry("ccc","ddd",R.drawable.tab2_hdpi));        members.add(new ListEntry("assa","cxv",R.drawable.tab3_hdpi));        members.add(new ListEntry("BcxsadvBB","AcxdxvAA"));        members.add(new ListEntry("BcxvadsBB","AcxzvAA"));        members.add(new ListEntry("BcxvBB","AcxvAA"));        members.add(new ListEntry("BvBB","AcxsvAA"));        members.add(new ListEntry("BcxvBB","AcxsvzAA"));        members.add(new ListEntry("Bcxadv","AcsxvAA"));        members.add(new ListEntry("BcxcxB","AcxsvAA"));        ListView lv = (ListView)findViewById(R.id.listView1);        Log.i("testTag","before start adapter");        StringArrayAdapter ad = new StringArrayAdapter (members,this);        Log.i("testTag","after start adapter");        Log.i("testTag","set adapter");        lv.setAdapter(ad);        lv.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position,                    long id) {                Intent intent = new Intent(context, SendMessage.class);                String message = "abc";                intent.putExtra(EXTRA_MESSAGE, message);                startActivity(intent);            }        });    }
查看完整描述

3 回答

?
胡說叔叔

TA貢獻1804條經(jīng)驗 獲得超8個贊

我看不到你在哪里申報context。出于意圖創(chuàng)建的目的,您可以使用MainActivity.this


 lv.setOnItemClickListener(new OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> parent, View view, int position,

                    long id) {

                Intent intent = new Intent(MainActivity.this, SendMessage.class);

                String message = "abc";

                intent.putExtra(EXTRA_MESSAGE, message);

                startActivity(intent);

            }

        });

單擊后要檢索對象,可以使用AdapterView:


ListEntry entry = (ListEntry) parent.getItemAtPosition(position);


查看完整回答
反對 回復(fù) 2019-10-28
?
慕斯王

TA貢獻1864條經(jīng)驗 獲得超2個贊

ListView具有Item單擊偵聽器回調(diào)。您應(yīng)該在onItemClickListener中設(shè)置ListView。回調(diào)包含AdapterView和position作為參數(shù)。哪個可以給你ListEntry。


lv.setOnItemClickListener(new OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> parent, View view, int position,

                    long id) {

                ListEntry entry= (ListEntry) parent.getAdapter().getItem(position);

                Intent intent = new Intent(MainActivity.this, SendMessage.class);

                String message = entry.getMessage();

                intent.putExtra(EXTRA_MESSAGE, message);

                startActivity(intent);

            }

        });


查看完整回答
反對 回復(fù) 2019-10-28
?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

如您所說,此語句中的代碼中出現(xiàn)錯誤


Intent intent = new Intent(context, SendMessage.class);

這是由于您向Intent構(gòu)造函數(shù)中提供了OnItemClickListener匿名類的上下文,但根據(jù)Intent的構(gòu)造函數(shù)


android.content.Intent.Intent(Context packageContext, Class<?> cls)

您必須提供您使用Intent的活動上下文,即MainActivity類上下文。因此,出現(xiàn)錯誤的語句將被轉(zhuǎn)換為


Intent intent = new Intent(MainActivity.this, SendMessage.class);

另外,要將您的消息從此MainActivity發(fā)送到SendMessage類,請參見以下代碼


lv.setOnItemClickListener(new OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> parent, View view, int position,

                    long id) {

                ListEntry entry= (ListEntry) parent.getAdapter().getItem(position);

                Intent intent = new Intent(MainActivity.this, SendMessage.class);

                intent.putExtra(EXTRA_MESSAGE, entry.getMessage());

                startActivity(intent);

            }

        });

請告訴我這是否對您有幫助


編輯:- 如果您發(fā)現(xiàn)某些問題以獲得列表的值,請執(zhí)行一件事清除您的數(shù)組列表


ArrayList<ListEntry> members = new ArrayList<ListEntry>();

全局,即在oncreate和更改您的監(jiān)聽器之前,如下所示


 lv.setOnItemClickListener(new OnItemClickListener() {

                @Override

                public void onItemClick(AdapterView<?> parent, View view, int position,

                        long id) {

                    Intent intent = new Intent(MainActivity.this, SendMessage.class);

                    intent.putExtra(EXTRA_MESSAGE, members.get(position));

                    startActivity(intent);

                }

            });

所以你的整個代碼看起來像


public class MainActivity extends Activity {

    public final static String EXTRA_MESSAGE = "com.example.ListViewTest.MESSAGE";

ArrayList<ListEntry> members = new ArrayList<ListEntry>();


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        members.add(new ListEntry("BBB","AAA",R.drawable.tab1_hdpi));

        members.add(new ListEntry("ccc","ddd",R.drawable.tab2_hdpi));

        members.add(new ListEntry("assa","cxv",R.drawable.tab3_hdpi));

        members.add(new ListEntry("BcxsadvBB","AcxdxvAA"));

        members.add(new ListEntry("BcxvadsBB","AcxzvAA"));

        members.add(new ListEntry("BcxvBB","AcxvAA"));

        members.add(new ListEntry("BvBB","AcxsvAA"));

        members.add(new ListEntry("BcxvBB","AcxsvzAA"));

        members.add(new ListEntry("Bcxadv","AcsxvAA"));

        members.add(new ListEntry("BcxcxB","AcxsvAA"));

        ListView lv = (ListView)findViewById(R.id.listView1);

        Log.i("testTag","before start adapter");

        StringArrayAdapter ad = new StringArrayAdapter (members,this);

        Log.i("testTag","after start adapter");

        Log.i("testTag","set adapter");

        lv.setAdapter(ad);

        lv.setOnItemClickListener(new OnItemClickListener() {

                    @Override

                    public void onItemClick(AdapterView<?> parent, View view, int position,

                            long id) {

                        Intent intent = new Intent(MainActivity.this, SendMessage.class);

                        intent.putExtra(EXTRA_MESSAGE, members.get(position).getMessage());

                        startActivity(intent);

                    }

                });

    }

其中g(shù)etMessage()是在ListEntry類中指定的getter方法,用于獲取先前設(shè)置的消息。


查看完整回答
反對 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 441 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號