BEANTWORTETEN VON MIR ParsenWie kundenspezifische Adapter nach Daten vom Server
Ich bin verwirrt, wo zu setzen und wie verwenden, um meine benutzerdefinierten Adapter zu verwenden. Meine Parser.class hat einen eigenen Adapter und meine MainActivity übergibt 3 Parameter an die Parser.class (context, url, listview).
(mein Problem einfach zu machen)
Nach einem benutzerdefinierten Layout, kundenspezifische Adapter zu schaffen und meine benutzerdefinierten Adapter instanziiert wird, weiß ich nicht, was zu tun ist.
Ich habe versucht, meinen benutzerdefinierten Adapter in meinem MainActivity instanziieren dann MainActivity m = new MainActivity();
in meinem Parser.class erstellen und verwenden nur die Textviews meiner benutzerdefinierten Listenansicht wie m.name_tv.setText(name);
und m.price_tv.setText(price)
dann R.layout.list_layout
die android.R.layout.simple_list_item_1
zu meinen benutzerdefinierten Listenansicht Layout zu ändern.
Ich habe gerade experimentiert, weil ich Probleme habe zu verstehen. Bitte helfen.
Das ist mein Parser.class
public class Parser extends AsyncTask<Void,Integer,Integer> {
Context c;
ListView lv;
String data;
ArrayList<String> categories = new ArrayList<>();
ProgressDialog pd;
public Parser(Context c, String data, ListView lv) {
this.c = c;
this.data = data;
this.lv = lv;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(c);
pd.setTitle("Parsing Data");
pd.setMessage("Please Wait...");
pd.show();
}
@Override
protected Integer doInBackground(Void... params) {
return this.parse();
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if(integer == 1)
{
//ADAPTER
ArrayAdapter<String> adapter = new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1, categories);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position == 0){
}
}
});
}else
{
Toast.makeText(c,"Unable to Parse",Toast.LENGTH_SHORT).show();
}
pd.dismiss();
}
//PARSE RECEIVED DATA
private int parse(){
try
{
//ADD THAT DATA TO JSON ARRAY FIRST
JSONArray ja = new JSONArray(data);
//CREATE JO OBJECT TO HOLD A SINGLE ITEM
JSONObject jo = null;
categories.clear();
//LOOP THROUGH ARRAY
for(int i =0 ; i<ja.length();i++)
{
jo = ja.getJSONObject(i);
//RETRIEVE NAME
name=jo.getString("item_name");
price=jo.getString("item_price");
//ADD TO ARRAY LIST
categories.add(name + " " + price);
}
return 1;
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
}
Sollte es besser sein, nicht die Klassen zu trennen, oder es wird die gleiche Arbeit?
ist. Ich kann meine Daten von meinem Server analysieren. Ich möchte nur einen Button zu meiner Listview hinzufügen. –
yea, weil du falsche Richtung nimmst, sollte Parse-Klasse Verweis auf Listview tragen, und warum du nicht den Knopf in deine Mainactivity steckst –
Ich löste mein eigenes Problem. Wie kann ich meine Frage beantworten? –