Конечно, вы можете передать String
значения в ListView
.Мой вопрос: зачем использовать ListView
для одной записи?ListView
генерирует много служебных данных.
Почему ListView
не показывает никаких значений, потому что метод getCount()
определяет, сколько строк отображается в вашем списке.
AЛучшим решением было бы создать пользовательский класс - возможно, Transactions
, который содержит получатели и установщики для должника и получателя.Добавьте новый Transactions
к ArrayList
для каждой строки, которая будет отображаться в ListView
..., даже если это всего одна строка.
Возможное решение ::
public class MyListAdapter extends ArrayAdapter<Transaction> {
private static final String TAG = MyListAdapter.class.getSimpleName();
public MyListAdapter(Context context, ArrayList<Transaction> transactionList) {
super(context, 0, transactionList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
Transaction transactionData = getItem(position);
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_layout_2, parent, false);
}
TextView textView1 = (TextView) convertView.findViewById(R.id.textView1);
TextView textView2 = (TextView) convertView.findViewById(R.id.textView2);
String debtor = transactionData.getDebtor();
String receiver = transactionData.getReceiver();
textView1.setText(debtor);
textView2.setText(receiver);
return convertView;
}
}
Пользовательский класс Transaction
может выглядеть следующим образом:
public class Transaction {
private String debtor = "";
private String receiver = "";
public Transaction(){
}
public Transaction(String debtor, String receiver){
this.debtor = debtor;
this.receiver = receiver;
}
public void setDebtor(String debtor){ this.debtor = debtor; }
public void setReceiver(String receiver){ this.receiver = receiver; }
public String getDebtor(){ return this.debtor; }
public String getReceiver() { return this.receiver; }
}
Теперь вы можете просто заполнить список:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// There would of course be a better way to populate the data!!
ArrayList<> transactionList = new ArrayList<>();
transactionList.add(new Transaction("Mike","Bob"));
MyListAdapter theAdapter = new MyListAdapter(this, arrayDriverListData);
ListView transaction_list = (ListView) findViewById(R.id.transaction_list);
transaction_list.setAdapter(theAdapter);
}
ПРИМЕЧАНИЕ:
Я набрал это в стандартном TextEditor (без автокоррекции) ... поэтому может быть несколько ошибок.