我希望在我的外部数据库上运行查询,到目前为止,我完成了所有编码。虽然编码工作,我需要它将“名称”和“cphone”放在某种数组中,所以我可以将它作为双行添加到自定义列表适配器。
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '''
名称
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '''
cphone
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '''
到这个
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '''
名称cphone
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '''
Log.d("RESULT", result);
try {
JSONArray jArray = new JSONArray(result);
ArrayList<String> items = new ArrayList<String>();
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
String name = json_data.getString("username");
String cphone = json_data.getString("password");
items.add(name);
items.add(cphone);
Log.d(name, "Sever Output");
}
ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(
getdata.this, R.layout.stashrow, items);
ListView sList = (ListView) findViewById(R.id.liststash);
sList.setAdapter(mArrayAdapter);
} catch (Exception e) {
Log.e("errorLog", "Error makingView: " + e.toString());
}
问题在于item.add(),我一次只能输入一个值,所以它会使它成为2个不同的行。如果我尝试向stashrow添加另一个textview,则会出错。有没有更好的方法呢?
答案 0 :(得分:0)
基本的ArrayAdapter没有配置为做得非常多。如果你满足于简单格式化 #&39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&# 39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39; &#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;
命名cphone
&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39 ;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;& #39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;
然后你也可以将字符串连接在一起:
String name = json_data.getString("username");
String cphone = json_data.getString("password");
String user = name + " " + cphone;
items.add(user);
对于更复杂的事情,您最好定义自己的数据对象(比如User
,例如getName()
和getCPhone()
)然后进行子类化ArrayAdapter将数组中的对象转换为您真正想要的格式良好的ListView - 如下所示:
public class MyAdapter extends ArrayAdapter<User> {
// Constructor, etc
...
@Override
public void getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.stashrow, null);
}
User user = items.get(position)
TextView name = (TextView) findViewById(R.id.stash_row_name);
TextView chpone = (TextView) findViewById(R.id.stash_row_cphone);
name.setText(user.getName());
cphone.setText(user.getCPhone());
}
希望有所帮助!