Субобъект ListView, активируемый нажатием кнопки мыши
Задав вопрос и потратив 15 дней на его решение, я снова ищу помощь и решение. В MainActivity я создал задачу загрузки Json, которая загружает данные из http, и с помощью CustomListAdapter.class я заполняю список. Все работает. Теперь, в списке просмотра у меня есть 2 textview 'с которой я хочу быть кликабельным, один из них "Принять», это textview просто в XML это 'не заполнены адаптером или Json. "Принять» должен работать такИзмените текст на Принятый и измените цвет " и работает как все остальное. НО, когда я нажму на первый "Принять»(Позиция 0) в списке просмотра изменяет другие элементы списка (Позиция 4,9). Это'Как будто я нажал на просмотр текста в позиции 4,9. На первом изображении перед нажатиемПринять» и второе - после нажатия.
///
public class MainActivity extends Activity {
protected static final String TAG = null;
public ArrayList feedList;
public ListView feedListView;
private ProgressBar progressbar;
private CustomListAdapter adap;
private LayoutInflater mInflater;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
feedListView= (ListView) findViewById(R.id.custom_list);
mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
String url = "...";
new DownloadFilesTask().execute(url);
getActionBar().setIcon(R.drawable.angel);
progressbar = (ProgressBar)findViewById(R.id.progressBar);
public void updateList() {
adap = new CustomListAdapter(this, feedList);
feedListView.setAdapter(adap);
}
public class DownloadFilesTask extends AsyncTask {
///....
CustomListAdapter.class
public class CustomListAdapter extends BaseAdapter
{
private ArrayList listData;
private LayoutInflater layoutInflater;
private Context mContext;
private ArrayList data;
protected ListView feedListView;
ArrayList list;
public CustomListAdapter(Context context, ArrayList listData)
{
this.listData = listData;
layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mContext = context;
data = new ArrayList();
for (int i = 0; i < 10; i++) {
data.add("Sample Text " + String.valueOf(i));
}
}
@Override
public int getCount()
{
return listData.size();
}
@Override
public Object getItem(int position)
{
return listData.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
public View getView( int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
View row=convertView;
if ((row == null) || (row.getTag()==null)) {
convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
holder = new ViewHolder();
holder.headlineView = (TextView)convertView.findViewById(R.id.name);
holder.reportedDateView = (TextView) convertView.findViewById(R.id.confid);
holder.accept= (TextView) convertView.findViewById(R.id.acceptTV);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
final FeedItem newsItem = (FeedItem) listData.get(position);
holder.accept.setFocusable(true);
holder.accept.setClickable(true);
holder.headlineView.setText(Html.fromHtml(newsItem.getTitle()));
holder.reportedDateView.setText(Html.fromHtml(newsItem.getContent()));
holder.accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
holder.accept.setText(Html.fromHtml(newsItem.getContent()));
}
});
return convertView;
}
static class ViewHolder
{
TextView accept;
TextView headlineView;
TextView reportedDateView;
ImageView imageView;
FeedItem newsItem;
}