私はこれらのようないくつかの質問を発見した、と私はsetOnItemClickListener
として使用されるべきであることを得るのです。しかしは、選択可能なカスタムリストビュー
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(position) {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String Value = listView.getItemAtPosition();
}
});
、私はこの作業を取得することはできませんよ。 JSON配列からlistViewを動的に生成しているので少し難解です。
私はDisplayListView
クラスに文字列としてデータを渡すためにテントを使用しています:上記で
public class DisplayListView extends AppCompatActivity {
String response;
JSONObject jsonObject;
JSONArray jsonArray;
DrinksAdapter drinksAdapter;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_listview_layout);
listView = (ListView) findViewById(R.id.listview);
drinksAdapter = new DrinksAdapter(this,R.layout.row_layout);
listView.setAdapter(drinksAdapter);
response = getIntent().getExtras().getString("json_data");
try {
jsonObject = new JSONObject(response);
jsonArray = new JSONObject(response).getJSONArray("Menu");
//jsonArray = jsonObject.getJSONArray("Menu");
int count = 0;
String ime,kolicina,cijena;
while(count < jsonArray.length()) {
JSONObject JO = jsonArray.getJSONObject(count);
ime = JO.getString("ime");
kolicina = JO.getString("kolicina");
cijena = JO.getString("cijena");
Drinks drinks = new Drinks(ime,kolicina,cijena);
drinksAdapter.add(drinks);
count++;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
、Imは、配列をループしてDrinksAdapter
を呼び出すことで、データを初期化:
public class DrinksAdapter extends ArrayAdapter {
List list = new ArrayList();
public DrinksAdapter(@NonNull Context context, @LayoutRes int resource) {
super(context, resource);
}
public void add(Drinks object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Nullable
@Override
public Object getItem(int position) {
return list.get(position);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View row;
row = convertView;
DrinkHolder drinkHolder;
if(row == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.row_layout,parent,false);
drinkHolder = new DrinkHolder();
drinkHolder.tx_ime = (TextView) row.findViewById(R.id.tx_ime);
drinkHolder.tx_kolicina = (TextView) row.findViewById(R.id.tx_kolicina);
drinkHolder.tx_cijena = (TextView) row.findViewById(R.id.tx_cijena);
row.setTag(drinkHolder);
} else {
drinkHolder = (DrinkHolder) row.getTag();
}
Drinks drinks = (Drinks) this.getItem(position);
drinkHolder.tx_ime.setText(drinks.getIme());
drinkHolder.tx_kolicina.setText(drinks.getKolicina());
drinkHolder.tx_cijena.setText(drinks.getCijena());
return row;
}
static class DrinkHolder {
TextView tx_ime,tx_kolicina,tx_cijena;
}
}
Drinks
クラスを使用して変数を初期化しています。
どこでこの機能を実装することができますか?現時点で立ち往生
私は学ぶことがたくさんあると私は毎日そうやって知っている、それはイムのように見えるだけのビット:(
ヘルプの任意の種類が高く評価されています。 ありがとう!
同様
によって方法?私はTextViews – phpdroid
アイデアは、リストビュー内の行を選択することですamacfねえ、あなたの答えをありがとうございました。私は(それらの1つ)で開始するように直面していた問題があった。カントの解決のシンボル「位置」だけでなく、ドリンク。 :( – py9