我想在ListView的一行中显示2个数据,但是我被卡住了。
我的问题出在showList()
方法中。我不能使用我的自定义ListView XML来显示2个数据,我只能显示1个数据。我想在自定义ListView中显示item
和itemsemail
数组,而不仅仅是item
。
这是我的自定义ListView适配器代码...
private void getDosen() {
//Ketika Aplikasi mengambil data kita akan melihat progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Mengambil Data","Mohon tunggu..",false,false);
//Logging Interceptor
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
//set Level Log
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ROOT_URL)
.addConverterFactory(GsonConverterFactory.create())//GsonConverter untuk parsing json
.client(httpClient.build())
.build();
RestAPI service = retrofit.create(RestAPI.class);
Call<Model> call = service.loadListDosen();
call.enqueue(new Callback<Model>() { //Asyncronous Request
@Override
public void onResponse(Call<Model> call, Response<Model> response) {
loading.dismiss();
List<Listdosen> dosen = response.body().getListdosen();
//memasukkan data dari varibel dosen ke dosens
dosens = dosen;
//memanggil method untuk menampilkan list
showList();
}
@Override
public void onFailure(Call<Model> call, Throwable t) {
}
});
}
private void showList() {
//String array untuk menyimpan nama semua nama dosen
String[] items = new String[dosens.size()];
String[] itemsemail = new String[dosens.size()];
for (int i = 0; i < dosens.size(); i++) {
items[i] = dosens.get(i).getNama();
itemsemail[i] = dosens.get(i).getEmail();
}
//Membuat Array Adapter for listview
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_dosen_listview, items);
//setting adapter untuk listview
listview.setAdapter(adapter);
}
答案 0 :(得分:0)
首先,您需要一个适配器类,使用两个TextView来扩展布局,并将数据源绑定到该布局。
我已经创建了一个布局文件和你可以插入现有代码的适配器,我希望它适合你。
这是布局文件。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/items"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/app_name"
android:layout_margin="16dp"/>
<TextView
android:id="@+id/itemsEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/items"
android:text="@string/app_name"
android:layout_alignBaseline="@+id/items"/>
</RelativeLayout>
对于Adapter类,代码在
下面import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
public class MyBaseAdapter extends BaseAdapter {
private LayoutInflater layoutinflater;
private List<Listdosen> listStorage;
private Context context;
public MyBaseAdapter(Context context, List<Listdosen> customizedListView) {
this.context = context;
layoutinflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
listStorage = customizedListView;
}
@Override
public int getCount() {
return listStorage.size();
}
@Override
public Listdosen getItem(int position) {
return listStorage.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder listViewHolder;
if(convertView == null){
listViewHolder = new ViewHolder();
convertView = layoutinflater.inflate(R.layout.two_items, parent, false);
listViewHolder.items = (TextView)convertView.findViewById(R.id.items);
listViewHolder.itemEmail = (TextView)convertView.findViewById(R.id.itemsEmail);
convertView.setTag(listViewHolder);
}else{
listViewHolder = (ViewHolder)convertView.getTag();
}
listViewHolder.items.setText(listStorage.get(position).getName());
listViewHolder.itemEmail.setText(listStorage.get(position).getEmail());
return convertView;
}
static class ViewHolder{
TextView items;
TextView itemEmail;
}
}
调整您的代码以适应更改。
showList() to showList(List<Listdosen> dosen)
而不是
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_dosen_listview, items);
使用此
ArrayAdapter adapter = new ArrayAdapter<Listdosen>(this, dosen);