使用列表视图选择项设置布局 - Android
Set layout with listview selected item - Android
我有问题。
- 我想在列表视图中使用所选项目进行重定向布局。
- 我想重定向的布局有空视图对象,我想
用所选列表视图对象中的数据填充它们
- 但我做不到,我进行了调试,但在第 67 行出现错误
单击列表视图对象。我该怎么办?
请帮我做作业
这段代码在onCreate方法中
代码:
final ListView listView = (ListView) findViewById(R.id.lw_yemekTarifleri);
customAdapter adapter = new customAdapter(this, yemekTarifleriList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Log.i("OnClick", "position = " + position);
ImageView yemekResim = (ImageView) findViewById(R.id.iw_yemekResim);
TextView yemekIsim = (TextView) findViewById(R.id.tw_yemekIsim);
TextView yemekSure = (TextView) findViewById(R.id.tw_yemekSure);
TextView yemekMalzemeler = (TextView) findViewById(R.id.tw_malzemeler);
TextView yemekTarif = (TextView) findViewById(R.id.tw_tarif);
yemekTarifi secilenYemek = yemekTarifleriList.get(position);
yemekResim.setImageResource(secilenYemek.getResim()); //(line 67)!!!!!!!!!!!!
yemekIsim.setText(secilenYemek.getIsim());
yemekSure.setText(secilenYemek.getHazirlanisSuresi());
yemekMalzemeler.setText(secilenYemek.getMalzemeler());
yemekTarif.setText(secilenYemek.getTarif());
setContentView(R.layout.yemek_tarifi);
}
});
错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.erensayar_yemektarifi, PID: 13293
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object
reference
at com.example.erensayar_yemektarifi.anaSayfa_yemekTarifleri.onItemClick(anaSayfa_yemekTarifleri.java:67)
at android.widget.AdapterView.performItemClick(AdapterView.java:318)
at android.widget.AbsListView.performItemClick(AbsListView.java:1159)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136)
at android.widget.AbsListView.run(AbsListView.java:4052)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
代码已上传至 github : github.com/erensayar/android
检查 secilenYemek 对象的值是否真的用值初始化。
我的建议是在第 67 行之前设置一个调试点,即(第 66 行)并正确检查 secilenYemek 对象的值。因为它因此抛出空指针异常。
试试这个
ImageView yemekResim = (ImageView) findViewById(R.id.iw_yemekResim);
TextView yemekIsim = (TextView) findViewById(R.id.tw_yemekIsim);
TextView yemekSure = (TextView) findViewById(R.id.tw_yemekSure);
TextView yemekMalzemeler = (TextView) findViewById(R.id.tw_malzemeler);
TextView yemekTarif = (TextView) findViewById(R.id.tw_tarif);
final ListView listView = (ListView) findViewById(R.id.lw_yemekTarifleri);
customAdapter adapter = new customAdapter(this, yemekTarifleriList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Log.i("OnClick", "position = " + position);
yemekTarifi secilenYemek = yemekTarifleriList.get(position);
yemekResim.setImageResource(secilenYemek.getResim());
yemekIsim.setText(secilenYemek.getIsim());
yemekSure.setText(secilenYemek.getHazirlanisSuresi());
yemekMalzemeler.setText(secilenYemek.getMalzemeler());
yemekTarif.setText(secilenYemek.getTarif());
setContentView(R.layout.yemek_tarifi);
}
});
我发现了我的问题。
我忘记为我的目标布局打开 activity class。我创建了布局,但没有创建 activity。
然后,我应该从 listview onclick activity.
发送其他 activity(我的布局适配器)数据
而且我们应该使用意图
像这样:
//这个区块已经有
final ListView listView = (ListView) findViewById(R.id.lw_yemekTarifleri);
customAdapter adapter = new customAdapter(this, yemekTarifleriList);
listView.setAdapter(adapter);
//当我们点击列表视图中的元素时(发件人)
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
setContentView(R.layout.yemek_tarifi_yemek_tarifleri);
yemekTarifi secilenYemek = yemekTarifleriList.get(position);
//Log.d("OnClick", "position = " + yemekTarifleriList.get(position));
//Elemanları layouta bastırmak için bu verileri öbür activity'e yani istediğimiz layouta göndermeliyiz. O da intent.putextra ile oluyor.
Intent intent = new Intent(getApplicationContext(), yemekTarifiAdapter.class);
intent.putExtra("isim", secilenYemek.getIsim());
intent.putExtra("malzemeler", secilenYemek.getMalzemeler());
intent.putExtra("tarif", secilenYemek.getTarif());
intent.putExtra("sure", secilenYemek.getHazirlanisSuresi());
startActivity(intent);
}
});
//这个块目标loyout的class.(适配器)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yemek_tarifi_yemek_tarifleri);
ImageView yemekResim = (ImageView) findViewById(R.id.iw_yemekResim);
TextView yemekIsim = (TextView) findViewById(R.id.tw_yemekIsim);
TextView yemekSure = (TextView) findViewById(R.id.tw_yemekSure);
TextView yemekMalzemeler = (TextView) findViewById(R.id.tw_malzemeler);
TextView yemekTarif = (TextView) findViewById(R.id.tw_tarif);
//Receiver
String isim = getIntent().getExtras().getString("isim");
String malzemeler = getIntent().getExtras().getString("malzemeler");
String tarif = getIntent().getExtras().getString("tarif");
int sure = getIntent().getExtras().getInt("sure");
yemekIsim.setText(isim);
yemekSure.setText(String.valueOf(sure));
yemekMalzemeler.setText(malzemeler);
yemekTarif.setText(tarif);
}//OnCreate Sonu
感谢所有帮助过的人。
如果想查看所有新代码:github/erensayar/android
我有问题。
- 我想在列表视图中使用所选项目进行重定向布局。
- 我想重定向的布局有空视图对象,我想 用所选列表视图对象中的数据填充它们
- 但我做不到,我进行了调试,但在第 67 行出现错误 单击列表视图对象。我该怎么办?
请帮我做作业
这段代码在onCreate方法中 代码:
final ListView listView = (ListView) findViewById(R.id.lw_yemekTarifleri);
customAdapter adapter = new customAdapter(this, yemekTarifleriList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Log.i("OnClick", "position = " + position);
ImageView yemekResim = (ImageView) findViewById(R.id.iw_yemekResim);
TextView yemekIsim = (TextView) findViewById(R.id.tw_yemekIsim);
TextView yemekSure = (TextView) findViewById(R.id.tw_yemekSure);
TextView yemekMalzemeler = (TextView) findViewById(R.id.tw_malzemeler);
TextView yemekTarif = (TextView) findViewById(R.id.tw_tarif);
yemekTarifi secilenYemek = yemekTarifleriList.get(position);
yemekResim.setImageResource(secilenYemek.getResim()); //(line 67)!!!!!!!!!!!!
yemekIsim.setText(secilenYemek.getIsim());
yemekSure.setText(secilenYemek.getHazirlanisSuresi());
yemekMalzemeler.setText(secilenYemek.getMalzemeler());
yemekTarif.setText(secilenYemek.getTarif());
setContentView(R.layout.yemek_tarifi);
}
});
错误:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.erensayar_yemektarifi, PID: 13293 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference at com.example.erensayar_yemektarifi.anaSayfa_yemekTarifleri.onItemClick(anaSayfa_yemekTarifleri.java:67) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1159) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136) at android.widget.AbsListView.run(AbsListView.java:4052) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
代码已上传至 github : github.com/erensayar/android
检查 secilenYemek 对象的值是否真的用值初始化。 我的建议是在第 67 行之前设置一个调试点,即(第 66 行)并正确检查 secilenYemek 对象的值。因为它因此抛出空指针异常。
试试这个
ImageView yemekResim = (ImageView) findViewById(R.id.iw_yemekResim);
TextView yemekIsim = (TextView) findViewById(R.id.tw_yemekIsim);
TextView yemekSure = (TextView) findViewById(R.id.tw_yemekSure);
TextView yemekMalzemeler = (TextView) findViewById(R.id.tw_malzemeler);
TextView yemekTarif = (TextView) findViewById(R.id.tw_tarif);
final ListView listView = (ListView) findViewById(R.id.lw_yemekTarifleri);
customAdapter adapter = new customAdapter(this, yemekTarifleriList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Log.i("OnClick", "position = " + position);
yemekTarifi secilenYemek = yemekTarifleriList.get(position);
yemekResim.setImageResource(secilenYemek.getResim());
yemekIsim.setText(secilenYemek.getIsim());
yemekSure.setText(secilenYemek.getHazirlanisSuresi());
yemekMalzemeler.setText(secilenYemek.getMalzemeler());
yemekTarif.setText(secilenYemek.getTarif());
setContentView(R.layout.yemek_tarifi);
}
});
我发现了我的问题。 我忘记为我的目标布局打开 activity class。我创建了布局,但没有创建 activity。 然后,我应该从 listview onclick activity.
发送其他 activity(我的布局适配器)数据而且我们应该使用意图 像这样:
//这个区块已经有
final ListView listView = (ListView) findViewById(R.id.lw_yemekTarifleri);
customAdapter adapter = new customAdapter(this, yemekTarifleriList);
listView.setAdapter(adapter);
//当我们点击列表视图中的元素时(发件人)
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
setContentView(R.layout.yemek_tarifi_yemek_tarifleri);
yemekTarifi secilenYemek = yemekTarifleriList.get(position);
//Log.d("OnClick", "position = " + yemekTarifleriList.get(position));
//Elemanları layouta bastırmak için bu verileri öbür activity'e yani istediğimiz layouta göndermeliyiz. O da intent.putextra ile oluyor.
Intent intent = new Intent(getApplicationContext(), yemekTarifiAdapter.class);
intent.putExtra("isim", secilenYemek.getIsim());
intent.putExtra("malzemeler", secilenYemek.getMalzemeler());
intent.putExtra("tarif", secilenYemek.getTarif());
intent.putExtra("sure", secilenYemek.getHazirlanisSuresi());
startActivity(intent);
}
});
//这个块目标loyout的class.(适配器)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yemek_tarifi_yemek_tarifleri);
ImageView yemekResim = (ImageView) findViewById(R.id.iw_yemekResim);
TextView yemekIsim = (TextView) findViewById(R.id.tw_yemekIsim);
TextView yemekSure = (TextView) findViewById(R.id.tw_yemekSure);
TextView yemekMalzemeler = (TextView) findViewById(R.id.tw_malzemeler);
TextView yemekTarif = (TextView) findViewById(R.id.tw_tarif);
//Receiver
String isim = getIntent().getExtras().getString("isim");
String malzemeler = getIntent().getExtras().getString("malzemeler");
String tarif = getIntent().getExtras().getString("tarif");
int sure = getIntent().getExtras().getInt("sure");
yemekIsim.setText(isim);
yemekSure.setText(String.valueOf(sure));
yemekMalzemeler.setText(malzemeler);
yemekTarif.setText(tarif);
}//OnCreate Sonu
感谢所有帮助过的人。
如果想查看所有新代码:github/erensayar/android