У меня есть представление списка, что набор на базовый адаптер, как следующее:Android Изменение цвета текста в базе адаптера
FQAdapter fa=new FQAdapter(FQActivity2.this, al);
lvfq.setAdapter(fa);
lvfq.setDivider(null);
В моей базе адаптера файл инфлятор XML имеют два поля, текст и изображения: я хочу, когда я нажмите на изображение в то время независимо от текста с этим, текст изменить их цвет, как следующее:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView; //trying to reuse a recycled view
ViewHolder holder = null;
if (vi == null)
{
holder=new ViewHolder();
LayoutInflater lif=(LayoutInflater) ctx.getSystemService (ctx.LAYOUT_INFLATER_SERVICE) ;
vi=lif.inflate(R.layout.item_fq, null);
holder.tvMsg=(TextView) vi.findViewById(R.id.tv_item_username);
holder.ivMinuse=(ImageView) vi.findViewById(R.id.iv_item_un_minuse);
vi.setTag(holder);
}
else
{
holder=(ViewHolder)vi.getTag();
}
final FAQ jou=al.get(position);
holder.tvMsg.setText(jou.getFqTitle());
holder.ivMinuse.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// here i want to set text color whatever image click
// like holder.setivMsg.setTextColor(Color.BLUE); but it effect on only last text of list
new GetAns().execute("url"+jou.getFqId());
//Log.v("dssfs", jou.getFqAns());
}
});
//date.roll(Calendar.DAY_OF_YEAR, true);
return vi ;
}
, как я пишу на коде комментария я хочу, чтобы изменить цвет текста holder.tvMsg в perticular положении, когда нажмите на holder.ivMinuse образ;
Пожалуйста, помогите мне сделать это
Edit: весь мой Java файл:
public class FQActivity extends Activity{
ImageView ivChcklistUnsel;
ImageView ivJourUnsel;
ImageView ivResourUnsel;
ImageView ivRecipUnsel;
ImageView ivSettingUnsel;
ImageView ivFaqUnsel;
ImageView ivChcklistsel;
ImageView ivJoursel;
ImageView ivResoursel;
ImageView ivRecipsel;
ImageView ivSettingsel;
ImageView ivFaqsel;
ListView lvfq;
ArrayList<FAQ> al;
TextView tvAns;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fq_layout);
initImageview();
tvAns=(TextView) findViewById(R.id.tv_ans);
tvAns.setMovementMethod(new ScrollingMovementMethod());
lvfq=(ListView) findViewById(R.id.lv_fqlistview);
new GetJournal().execute(Appconstants.SERVICE_URL1+"faq/getFaqData");
}
public class GetJournal extends AsyncTask<String, Void, String>
{
ProgressDialog pd;
@Override
protected void onPreExecute() {
super.onPreExecute();
pd=new ProgressDialog(FQActivity.this);
pd.setMessage(Html.fromHtml("<b>Please Wait</b><br/>loading..."));
pd.setIndeterminate(false);
pd.setCancelable(false);
pd.show();
}
@Override
protected String doInBackground(String... params) {
return new DownloadAdapter(FQActivity.this).getJSONData(params[0]);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
pd.cancel();
try
{
JSONObject obj=new JSONObject(result);
Log.v("dd", result);
if(obj.getString("status").equals("success"))
{
JSONArray arr=obj.getJSONArray("response");
al=new ArrayList<FAQ>();
FAQ fq;
for(int i=0;i<arr.length();i++)
{
obj=arr.getJSONObject(i);
fq=new FAQ();
Log.v("dd", obj.getString("faq_title"));
fq.setFqId(obj.getString("faq_id"));
fq.setFqTitle(obj.getString("faq_title"));
//fq.setFqQue(obj.getString("faq_qus"));
//fq.setFqAns(obj.getString("faq_ans"));
al.add(fq);
}
FQAdapter fa=new FQAdapter(FQActivity.this, al);
lvfq.setAdapter(fa);
lvfq.setDivider(null);
}
else
{
Toast.makeText(getApplicationContext(), obj.getString("response"), Toast.LENGTH_SHORT).show();
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
public class GetAns extends AsyncTask<String, Void, String>
{
ProgressDialog pd;
@Override
protected void onPreExecute() {
super.onPreExecute();
pd=new ProgressDialog(FQActivity.this);
pd.setMessage(Html.fromHtml("<b>Please Wait</b><br/>loading..."));
pd.setIndeterminate(false);
pd.setCancelable(false);
pd.show();
}
@Override
protected String doInBackground(String... params) {
return new DownloadAdapter(FQActivity.this).getJSONData(params[0]);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
pd.cancel();
try
{
JSONObject obj=new JSONObject(result);
Log.v("dd", result);
if(obj.getString("status").equals("success"))
{
JSONArray arr=obj.getJSONArray("response");
obj=arr.getJSONObject(0);
tvAns.setText(obj.getString("faq_ans"));
}
else
{
Toast.makeText(getApplicationContext(), obj.getString("response"), Toast.LENGTH_SHORT).show();
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
private void initImageview()
{
ivChcklistsel= (ImageView) findViewById(R.id.iv_checklist_sel);
ivChcklistsel.setVisibility(View.GONE);
ivJoursel= (ImageView) findViewById(R.id.iv_jour_sel);
ivResoursel= (ImageView) findViewById(R.id.iv_resour_sel);
ivRecipsel= (ImageView) findViewById(R.id.iv_recipes_sel);
ivFaqsel= (ImageView) findViewById(R.id.iv_faq_sel);
ivFaqsel.setVisibility(View.VISIBLE);
ivSettingsel= (ImageView) findViewById(R.id.iv_setting_sel);
ivChcklistUnsel= (ImageView) findViewById(R.id.iv_checklist_unsel);
ivChcklistUnsel.setVisibility(View.VISIBLE);
ivJourUnsel= (ImageView) findViewById(R.id.iv_jour_unsel);
ivResourUnsel= (ImageView) findViewById(R.id.iv_resour_unsel);
ivRecipUnsel= (ImageView) findViewById(R.id.iv_recipes_unsel);
ivFaqUnsel= (ImageView) findViewById(R.id.iv_faq_unsel);
ivFaqUnsel.setVisibility(View.GONE);
ivSettingUnsel= (ImageView) findViewById(R.id.iv_setting_unsel);
ivChcklistUnsel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//startActivity(new Intent(getApplicationContext(), DailyCheckListActivity.class));
finish();
}
});
ivResourUnsel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), ResourceActivity.class));
finish();
}
});
ivRecipUnsel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), RecipesActivity.class));
finish();
}
});
ivJourUnsel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), DailyJournalActivity.class));
finish();
}
});
ivSettingUnsel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), AppSettingActivity.class));
finish();
}
});
}
public class FQAdapter extends BaseAdapter{
Context ctx;
ArrayList<FAQ> al;
int i1=0;
public FQAdapter(Context cxt,ArrayList<FAQ> al)
{
this.ctx=cxt;
this.al=al;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return al.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView; //trying to reuse a recycled view
ViewHolder holder = null;
if (vi == null)
{
holder=new ViewHolder();
LayoutInflater lif=(LayoutInflater) ctx.getSystemService (ctx.LAYOUT_INFLATER_SERVICE) ;
vi=lif.inflate(R.layout.item_fq, null);
holder.tvMsg=(TextView) vi.findViewById(R.id.tv_item_username);
holder.ivMinuse=(ImageView) vi.findViewById(R.id.iv_item_un_minuse);
vi.setTag(holder);
}
else
{
holder=(ViewHolder)vi.getTag();
}
final FAQ jou=al.get(position);
holder.tvMsg.setText(jou.getFqTitle());
holder.ivMinuse.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// i try here all your answeres code but not working
new GetAns().execute("url"+jou.getFqId());
//Log.v("dssfs", jou.getFqAns());
}
});
//date.roll(Calendar.DAY_OF_YEAR, true);
return vi ;
}
class ViewHolder{
TextView tvMsg;
ImageView ivMinuse;
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
//super.onBackPressed();
}
}
holder.tvMsg дают ошибку, чтобы создать окончательный поэтому я также попробовать с глобальным декларации. ничего не работает для меня clcik и изменение цвет .. все работа на последнем изображении текст ot изображение.
Вам нужно следить за положение Clicked элемента. Затем получите представление по положению и задайте цвет текста. –
http://stackoverflow.com/questions/22352658/android-how-can-i-change-a-listview-text-color-on-click –