我想将几个对象放到listView中,但是我收到了错误
这是我的android代码:
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)
答案 0 :(得分:0)
试试这个
@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);
if(converView == null) {
convertView = inflater.inflate(R.layout.item_user, parent, false);
}
TextView textNama = (TextView) convertView.findViewById(R.id.textNama);
TextView textDetail = (TextView) convertView.findViewById(R.id.textDetail);
TextView textStatus = (TextView) convertView.findViewById(R.id.textStatus);
TextView textPeriode = (TextView) convertView.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 convertView;
}
答案 1 :(得分:0)
为什么你在Publikasiadapter上添加项目之前通过publikasi arraylist?这可能是导致问题的原因。并返回publikasi适配器上的视图