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

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

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è)置的消息。
- 3 回答
- 0 關(guān)注
- 441 瀏覽
添加回答
舉報