- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在经历一个 while 循环,它为我的适配器提供了不同的字符串
。但它没有显示任何内容,但是如果我传递一个数组,它就可以工作。我不知道是否只能传递 String
以及重写方法的 return
是否正确。
public class ReportAdapter extends BaseAdapter {
private Context context;
private String debtor;
private String receiver;
private BigDecimal difference;
private String groupName;
LayoutInflater inflater;
public ReportAdapter(Context applicationContext, String debtor, String receiver, BigDecimal difference, String groupName) {
this.context = applicationContext;
this.debtor = debtor;
this.receiver = receiver;
this.difference = difference;
this.groupName = groupName;
inflater = LayoutInflater.from(applicationContext);
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return 0;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
DecimalFormat df = new DecimalFormat("##.00");
SharedPreferences sharedPrefs = context.getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = sharedPrefs.edit();
convertView = inflater.inflate(R.layout.report_list_view, null);
TextView debtor = convertView.findViewById(R.id.debtor_tv);
TextView receiver = convertView.findViewById(R.id.receiver);
TextView difference = convertView.findViewById(R.id.difference_tv);
final CardView paidCard = convertView.findViewById(R.id.paid_cardview);
final Switch paidSwitch = convertView.findViewById(R.id.paid_switch);
debtor.setText(debtor.toString());
receiver.setText(receiver.toString());
difference.setText(String.valueOf(df.format(difference) + "€"));
paidSwitch.setChecked(sharedPrefs.getBoolean(groupName + "_checkValue" + position, false));
if (paidSwitch.isChecked()) {
// Set green background
paidCard.setCardBackgroundColor(Color.parseColor("#FF2E7D32"));
}
paidSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// Set green background
paidCard.setCardBackgroundColor(Color.parseColor("#FF2E7D32"));
editor.putBoolean(groupName + "_checkValue" + position, isChecked);
editor.commit();
} else {
// Set red background
paidCard.setCardBackgroundColor(Color.parseColor("#FFB71C1F"));
editor.putBoolean(groupName + "_checkValue" + position, isChecked);
editor.commit();
}
}
});
return convertView;
}
ListView 不出现。难道构造函数只接受Array类型?或者我可以传递一个String
? getCount()
和 getItem()
方法必须返回 0?因为对于 ArrayList,我返回 arraylist.get(position)
,但是对于 String
,我应该返回什么?
最佳答案
当然可以通过String
值您的ListView
。我的问题是:为什么使用 ListView
对于单个条目?一个ListView
产生大量开销。
为什么 ListView
没有显示任何值是因为方法 getCount()
指示列表中显示的行数。
更好的解决方案是创建一个自定义类 - 也许 Transactions
其中包含债务人和接收人的 getter 和 setter。添加新的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);
}
注意:
我在标准文本编辑器中输入了此内容(无自动更正功能)...因此可能存在一些错误。
关于java - 是否可以仅将 String 传递给自定义 ListView 适配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53788171/
如果您想使用 String.Concat() 连接 5 个或更多字符串,则它会使用 Concat(String[])。 为什么不一直使用 Concat(String[]) 而不再需要 Concat(S
今天在使用 String 时,我遇到了一种我以前不知道的行为。我无法理解内部发生的事情。 public String returnVal(){ return "5";
似乎在我所看到的任何地方,都有一些过时的版本,这些版本不再起作用。 我的问题似乎很简单。我有一个Java类,它映射到derby数据库。我正在使用注释,并且已经成功地在数据库中创建了所有其他表,但是在这
一、string::size_type() 在C++标准库类型 string ,在调用size函数求解string 对象时,返回值为size_type类型,一种类似于unsigned类型的int 数据
我正在尝试将数据保存到我的 plist 文件中,其中包含字符串数组的定义。我的plist - enter image description here 我将数据写入 plist 的代码是 -- let
我有一个带有键/值对的 JavaScript 对象,其中值是字符串数组: var errors = { "Message": ["Error #1", "Error #2"], "Em
例如,为了使用相同的函数迭代 List 和 List> ,我可以编写如下内容: import java.util.*; public class Test{ public static voi
第一个Dictionary就像 Dictionary ParentDict = new Dictionary(); ParentDict.Add("A_1", "1")
这是我的 jsp 文件: 我遇到了错误 The method replace(String, String, String) in the type Functions is not appl
我需要一些帮助。我有一个方法应该输出一个包含列表内容的 txt 文件(每行中的每个项目)。列表项是字符串数组。问题是,当我调用 string.Join 时,它返回文字字符串 "System.Strin
一位同事告诉我,使用以下方法: string url = "SomeURL"; string ext = "SomeExt"; string sub = "SomeSub"; string s
给定类: public class CategoryValuePair { String category; String value; } 还有一个方法: public
我正在尝试合并 Stream>>对象与所有 Streams 中的键一起映射到单个映射中. 例如, final Map someObject; final List>> list = someObjec
在这里使用 IDictionary 的值(value)是什么? 最佳答案 使用接口(interface)的值(value)始终相同:切换到另一个后端实现时,您不必更改客户端代码。 请考虑稍后分析您的代
我可以知道这两个字典声明之间的区别吗? var places = [String: String]() var places = [Dictionary()] 为什么当我尝试以这种方式附加声明时,只有
在 .NET 4.0 及更高版本中存在 string.IsNullOrWhiteSpace(string) 时,在检查字符串时使用 string.IsNullOrEmpty(string) 是否被视为
这个名字背后的原因是什么? SS64在 PowerShell 中解释此处的字符串如下: A here string is a single-quoted or double-quoted string
我打算离开 this 文章,尝试编写一个接受字符串和 &str 的函数,但我遇到了问题。我有以下功能: pub fn new(t_num: S) -> BigNum where S: Into {
我有一个结构为 [String: [String: String]] 的多维数组。我可以使用 for 循环到达 [String: String] 位,但我不知道如何访问主键(这个位 [String:
我正在尝试使用 sarama(管理员模式)创建主题。没有 ConfigEntries 工作正常。但我需要定义一些配置。 我设置了主题配置(这里发生了错误): tConfigs := map[s
我是一名优秀的程序员,十分优秀!