Вызов метода getView() в пользовательском ListView

Я использую пользовательский ListView с текстом и изображением стрелки справа от строки списка.

у меня есть следующее

1: MainActivity расширяет ListActivity

2: SpecialAdapter расширяет ArrayAdapter с помощью метода getView().

3: классы для базы данных Sqlite.

У меня есть EditText и я добавляю Button для хранения нового текста в базе данных, а также в моем списке. Код здесь.

 OnClickListener listenerAdd = new OnClickListener() {
        @Override
        public void onClick(View v) {
            Comment comment = null;
            EditText edit = (EditText) findViewById(R.id.edit_txt);
            String number = edit.getText().toString();
            if(!number.equals("")){
            comment = datasource.createComment(number);
            adapter.add(comment);
            edit.setText("");
            adapter.notifyDataSetChanged();
            }
            else{
                Toast.makeText(getApplicationContext(), "Please enter a Number",Toast.LENGTH_SHORT).show();
            }
        }
    };

Я совершенно запутался, в каком классе я должен использовать этот код?

Как вызвать метод getView?

Я использовал этот код в основном классе, но он выдает исключение.

Более важно, какой адаптер я должен использовать?

Код адаптера здесь..

    public class SpecialAdapter extends ArrayAdapter<Comment>{

    Context context;
    int layoutResourceId;   
    Comment data[]= null;
   // Comment dataCom[] = null;
    public SpecialAdapter(Context context, int layoutResourceId,Comment[] values) {
        super(context, layoutResourceId, values);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = values;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        WeatherHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new WeatherHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.img_arrow);
            holder.txtTitle = (TextView)row.findViewById(R.id.tv_number);

            row.setTag(holder);
        }
        else
        {
            holder = (WeatherHolder)row.getTag();
        }

        Comment comment =  data[position];
        holder.txtTitle.setText(comment.getComment());
        holder.imgIcon.setImageResource(R.drawable.arrow);

        return row;
    }

    static class WeatherHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
    }
}

person Abdus Salam    schedule 09.02.2013    source источник
comment
вставьте код вашего адаптера   -  person Qadir Hussain    schedule 09.02.2013
comment
я добавил код адаптера, пожалуйста, проверьте. @Кадир   -  person Abdus Salam    schedule 09.02.2013
comment
теперь скажите плз. каков твой вопрос   -  person Qadir Hussain    schedule 09.02.2013
comment
в какой класс я могу поместить код прослушивателя onclick.   -  person Abdus Salam    schedule 11.02.2013


Ответы (1)


вы должны поместить onClickListner в свой класс, который расширяется до Actvity. Также убедитесь, что ваш файл XML содержит эту кнопку. в противном случае вы получите исключение.

i.e

setContentView(R.layout.yourXMLLayoutFileName);

ваша кнопка должна быть в файле yourXMLLayoutFileName XML

person Qadir Hussain    schedule 11.02.2013