Autore Topic: AutoCompleteTextView e custom adapter  (Letto 251 volte)

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
AutoCompleteTextView e custom adapter
« il: 07 Settembre 2015, 20:19:40 CEST »
0
ciao!
sto cercando di usare un custome adapter per una AutoCompleteTextView.
in pratica ottengo questo errore:
Codice: [Seleziona]
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime        android.content.res.Resources$NotFoundException: String resource ID #0x2b6aba
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.content.res.Resources.getText(Resources.java:299)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.TextView.setText(TextView.java:4132)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at com.mp.meteo.JsonAdapter.getView(JsonAdapter.java:35)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.AbsListView.obtainView(AbsListView.java:2347)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.ListPopupWindow$DropDownListView.obtainView(ListPopupWindow.java:1706)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.ListView.measureHeightOfChildren(ListView.java:1270)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1181)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.ListPopupWindow.show(ListPopupWindow.java:568)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1105)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:974)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.AutoCompleteTextView.access$900(AutoCompleteTextView.java:90)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.widget.AutoCompleteTextView$PopupDataSetObserver$1.run(AutoCompleteTextView.java:1299)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.os.Handler.handleCallback(Handler.java:739)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.os.Handler.dispatchMessage(Handler.java:95)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.os.Looper.loop(Looper.java:135)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at android.app.ActivityThread.main(ActivityThread.java:5257)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at java.lang.reflect.Method.invoke(Native Method)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at java.lang.reflect.Method.invoke(Method.java:372)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
20:07:52.261        1421        com.mp.meteo        ERROR        AndroidRuntime            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
dove l'adapter è questo (vi indico la riga 35):
Codice: [Seleziona]
public class JsonAdapter extends ArrayAdapter<Cities> {

    private Context context;
    private List<Cities> items;
    private int viewResourceId;

    public JsonAdapter(Context context, int viewResourceId, List<Cities> items) {
        super(context, viewResourceId, items);
        this.context = context;
        this.items = items;
        this.viewResourceId = viewResourceId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(viewResourceId, null);
        }
        Cities cities = items.get(position);
        if (cities != null) {
            TextView txtId = (TextView) v.findViewById(R.id.city_id);
            TextView txtName = (TextView) v.findViewById(R.id.city_name);
            txtId.setText(cities.getId());
            txtName.setText(cities.getNome());
        }
        return v;
    }

    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }

}
il layout items.xml è questo:
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:paddingBottom="6dip"
              android:paddingLeft="5dp"
              android:paddingTop="4dip"
              android:id="@+id/linear_layout_items">

    <TextView
        android:id="@+id/city_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" />
   
    <TextView
        android:id="@+id/city_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp" />

</LinearLayout>
nell'activity:
Codice: [Seleziona]
public class MainActivity extends Activity {

    private AutoCompleteTextView acTextView;
    private JsonAdapter adapter;
    private List<Cities> list;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        list = new ArrayList<Cities>();
        acTextView = (AutoCompleteTextView) findViewById(R.id.auto_complete);
        acTextView.addTextChangedListener(new TextWatcher() {

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String search = s.toString();
                new GetJsonTask().execute(search);
            }

            public void afterTextChanged(Editable s) {
            }
        });

        acTextView.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            }
        });
    }

    private class GetJsonTask extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... params) {
            String s = params[0];
            if (s.length() > 2) {
                try {
                    list = JsonParse.getCities(s);
                    return null;
                } catch (IOException ex) {
                } catch (JSONException ex) {
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            adapter = new JsonAdapter(getApplicationContext(), R.layout.items, list);
            acTextView.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    }
}
sinceramente non riesco a capire quale sia il problema!

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Re:AutoCompleteTextView e custom adapter
« Risposta #1 il: 10 Settembre 2015, 21:53:51 CEST »
0
problema stupido, e messaggio di errore che secondo me non c'entra nulla:
Codice: [Seleziona]
txtId.setText(String.valueOf(cities.getId()));

ciao!!