gpt4 book ai didi

java - Android 适配器传递 JSON 对象数据?

转载 作者:行者123 更新时间:2023-12-02 04:35:06 25 4
gpt4 key购买 nike

对java和android非常陌生,但我想我需要一个布局充气器,我尝试实现它但失败了,我删除了该代码。

我可以将对象转换为字符串数组,并使用 ArrayAdapter 循环布局,将字符串分配给 textView

所以ArrayAdapter是有限的

ListAdapter dribbbleFeedAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.feed_card, R.id.info_text, titleArr);

我只能传入上下文、布局、textView 和字符串数组。

我想要做的是将图像和其他数据传递到该布局的 View 中。所以我的问题是如何构建适配器,以便我可以将对象中的值分配给 View ID?

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// GET Json and use adapter ListView
Ion.with(this)
.load("http://api.dribbble.com/shots/everyone")
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {

// SET Titles Array
List<String> titles = new ArrayList<String>();

// BUILD THE ARRAY
JsonArray shots = result.getAsJsonArray("shots");
for (int i = 0; i < shots.size(); i++) {
String title = shots.get(i).getAsJsonObject().get("title").getAsString();
titles.add(title);
}
String[] titleArr = new String[titles.size()];
titleArr = titles.toArray(titleArr);

// TODO: Put more data into the feed_card
//dribbbleImage.setImageResource(R.drawable.icon_1);
ListAdapter dribbbleFeedAdapter = new ArrayAdapter<String>(MainActivity.this,
R.layout.feed_card, R.id.info_text, titleArr);
ListView dribbbleDataListView = (ListView) findViewById(R.id.dribbbleFeedListView);
dribbbleDataListView.setAdapter(dribbbleFeedAdapter);
}
});

}

}

最佳答案

您应该编写自己的适配器扩展 BaseAdapter。

就像下面的代码:

public class TestAdapter extends BaseAdapter {

public TestAdapter(Context context, List<Data> dataList) {
this.dataList = dataList;
this.context = context;
}

private List<Data> dataList;
private Context context;

@Override
public int getCount() {
return dataList.size();
}

@Override
public Object getItem(int position) {
return dataList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(layout.your_list_item_layout, parent, false);
holder = new View();
holder.tv_title = convertView.findViewById(R.id.title);
holder.iv_data = convertView.findViewById(R.id.data);
convertView.setTag(holder);
}else {
holder = (ViewHolder)convertView.getTag();
}

Data data = dataList.get(position);
holder.tv_title.setText(data.getTitle());

return convertView;
}

private class ViewHolder {
TextView tv_title;
ImageView iv_data;
}
}

关于java - Android 适配器传递 JSON 对象数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com