【发布时间】:2018-04-16 08:08:21
【问题描述】:
我想把几个对象放到一个 listView 中,但是我遇到了一个错误
这是我的安卓代码:
public class ViewDosen extends AppCompatActivity {
TextView tvWelcome;
ListView listView;
List<Publikasi> lstPublikasi;
String namaDosen,kodeDosen;
PublikasiAdapter publikasiAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_dosen);
SharedPreferences DataDosen = getSharedPreferences("Dosen", Context.MODE_PRIVATE);
kodeDosen = DataDosen.getString("kodeDosen","");
namaDosen = DataDosen.getString("namaDosen","");
tvWelcome = (TextView) findViewById(R.id.tvWelcome);
tvWelcome.setText("Welcome "+namaDosen+"("+kodeDosen+")");
listView = (ListView) findViewById(R.id.lstPublikasi);
lstPublikasi = new ArrayList<>();
publikasiAdapter = new PublikasiAdapter(lstPublikasi,getApplicationContext());
listView.setAdapter(publikasiAdapter);
Publikasi publikasi1 = new Publikasi("ijadi","Scopus","Submit","Sebelum 2015");
Publikasi publikasi2 = new Publikasi("asfs","Scopus","Submit","Ganjil 2019");
lstPublikasi.add(publikasi1);
lstPublikasi.add(publikasi2);
}
这是我的模型:
public class Publikasi {
public String namaJurnal,tipePublikasi,status,periode;
public Publikasi(String namaJurnal,String tipePublikasi,String status,String periode) {
this.namaJurnal = namaJurnal;
this.tipePublikasi = tipePublikasi;
this.status = status;
this.periode = periode;
}
}
这是我的适配器:
public class PublikasiAdapter extends ArrayAdapter<Publikasi>{
private List<Publikasi> lstPublikasi;
private Context mCtx;
public PublikasiAdapter(List<Publikasi> P,Context c){
super(c, R.layout.list_publikasi,P);
this.lstPublikasi = P;
this.mCtx = c;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.list_publikasi,null,true);
TextView textNama = (TextView) view.findViewById(R.id.textNama);
TextView textDetail = (TextView) view.findViewById(R.id.textDetail);
TextView textStatus = (TextView) view.findViewById(R.id.textStatus);
TextView textPeriode = (TextView) view.findViewById(R.id.textPeriode);
Publikasi publikasi = lstPublikasi.get(position);
textNama.setText(publikasi.namaJurnal);
textDetail.setText(publikasi.tipePublikasi);
textStatus.setText(publikasi.status);
textPeriode.setText(publikasi.periode);
return super.getView(position, convertView, parent);
}
}
xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textNama"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textDetail"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textStatus"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textPeriode"/>
</LinearLayout>
这是我的错误信息:
PID: 3388 java.lang.IllegalStateException: ArrayAdapter 需要 资源 ID 为 TextView android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386) 引起:java.lang.ClassCastException:android.widget.LinearLayout 无法转换为 android.widget.TextView 在 android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
【问题讨论】:
-
你能提供
list_publikasi.xml代码吗? -
我已经用 xml 代码编辑了问题
-
你的问题是什么?
-
删除
super(c, R.layout.list_publikasi,P);这就是导致错误的原因 -
当我删除代码时,我在“public PublikasiAdapter(List
P,Context c)”中收到错误警告,指出 android.widget.ArrayAdapter 中没有可用的默认构造函数