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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

溫溫醬 2019-12-12 14:10:56
以下是我創(chuàng)建列表視圖的測(cè)試代碼,列表視圖成功顯示,但是單擊事件中有錯(cuò)誤。我想創(chuàng)建一個(gè)向新活動(dòng)發(fā)送硬編碼消息的意圖。但是,它顯示該行的錯(cuò)誤Intent intent = new Intent(context, SendMessage.class);那么,問題是,我應(yīng)該為這堂課提供什么?另外,如何代替硬編碼輸出消息,如何捕獲列表視圖行中的數(shù)據(jù)并將其傳遞給新活動(dòng)?例如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 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

我看不到你在哪里申報(bào)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);

            }

        });

單擊后要檢索對(duì)象,可以使用AdapterView:


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



查看完整回答
反對(duì) 回復(fù) 2019-12-13
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

ListView具有Item單擊偵聽器回調(diào)。您應(yīng)該在onItemClickListener中設(shè)置ListView?;卣{(diào)包含AdapterView和position作為參數(shù)。哪個(gè)可以給你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);

            }

        });



查看完整回答
反對(duì) 回復(fù) 2019-12-13
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

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


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的活動(dòng)上下文,即MainActivity類上下文。因此,出現(xiàn)錯(cuò)誤的語句將被轉(zhuǎn)換為


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

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


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);

            }

        });

請(qǐng)告訴我這是否對(duì)您有幫助


編輯:- 如果您發(fā)現(xiàn)某些問題以獲得列表的值,請(qǐng)執(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);

                }

            });

所以你的整個(gè)代碼看起來像


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è)置的消息。



查看完整回答
反對(duì) 回復(fù) 2019-12-13
  • 3 回答
  • 0 關(guān)注
  • 500 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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