Ошибка ListActivity CustomAdapter, onListItemClick никогда не работает - PullRequest
0 голосов
/ 29 февраля 2012

Ниже вы можете увидеть код, я реализовал простой адаптер для моего списка. Но я не могу войти в onListItemClick. может у кого есть предложения?

На самом деле список отображается нормально, но я не могу получить события onitemclick. заранее спасибо.

            public class MyListActivity extends ListActivity {


        @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                ArrayList<Frame> results = WebOperations
                        .loadList_Frame();
                myAdapter = new MyListAdapter(MyListActivity.this);
                myAdapter.internalList = results;

                setListAdapter(myAdapter);
                myAdapter.notifyDataSetChanged();

        };

        @Override
            protected void onListItemClick(ListView l, View v, int position, long id) {
                String item = (String) getListAdapter().getItem(position);
                Toast.makeText(this, item + " please show toast!!!!!!!!!", Toast.LENGTH_LONG).show();
            }


        public static class MyListAdapter extends BaseAdapter {

                public ArrayList<Frame> internalList;
                public LayoutInflater mInflater;
                public int pageCount = 0;
                public MyListAdapter(Context context) {
                    mInflater = LayoutInflater.from(context);
                }
                public int getCount() {
                    if (internalList == null)
                        return 0;
                    return internalList.size();
                }
                public Object getItem(int position) {
                    if (internalList == null || internalList.size() < position)
                        return null;
                    return internalList.get(position);
                }
                public long getItemId(int position) {
                    if (internalList == null || internalList.size() < position)
                        return 0;
                    return internalList.get(position).getId();
                }
                public View getView(int position, View arg1, ViewGroup parent) {
                    View v = arg1;
                    if ((v == null) || (v.getTag() == null)) {
                        v = mInflater.inflate(R.layout.entryrow, null);
                        try {
                            String gunlukText = String.format(" %s ",
                                    internalList.get(position).getKeyText().toString());
                            TextView entry = (TextView) v
                                    .findViewById(R.id.textViewEntryText);
                            entry.setText((CharSequence) gunlukText);
                        } catch (Exception e) {
                            Log.d("aaaaaaaaaaaaaaaaaaa", "errorrrrrrrrrrr");
                        }
                    }
                    return v;
                }

            }
            }

РЕДАКТИРОВАТЬ 1: я добавляю XML-файл layout_row layout ниже.

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/linearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textViewEntryText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:padding="5dp"
                android:paddingLeft="10dp"
                android:text="@string/Ana_Sayfa"
                android:textAppearance="?android:attr/textAppearanceMedium" />

        </LinearLayout>

Ответы [ 4 ]

2 голосов
/ 29 февраля 2012

Вы должны добавить своего слушателя в список просмотра:

getListView().setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
       String item = (String) getListAdapter().getItem(position);
       Toast.makeText(this, item + " please show toast!!!!!!!!!", Toast.LENGTH_LONG).show();
    }
});
1 голос
/ 29 февраля 2012

добавить onclicklistener в метод getView непосредственно перед возвращаемым представлением.

v.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    Log.w("position", position + "");
                }
            });

проверить, помогает ли это ..

1 голос
/ 29 февраля 2012

Неужели вы пытаетесь добавить в свой макет / запись строку addStatesFromChildrenattribute и установить для нее значение true?

http://developer.android.com/reference/android/view/ViewGroup.html#attr_android:addStatesFromChildren

0 голосов
/ 29 февраля 2012

Пожалуйста, обратитесь к одному из хороших примеров, приведенных в демонстрации API пользовательского BaseAdapter из http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List13.html Просто переопределите onListItemCLicked и проверьте. Работает отлично. Попробуйте изменить свой код соответствующим образом.

...