0
我想從適配器獲取TextView值並對其進行更改。訪問父GridView適配器內的活動獲取TextView值並更改它
我有適配器內的按鈕,當我按下該按鈕時,我想從適配器內更改TextView值。那可能嗎 ?
這裏是我的適配器:
public class CustomGridView3 extends BaseAdapter {
private ArrayList<ListItem> listData = new ArrayList<ListItem>();
private LayoutInflater layoutInflater;
private Context context;
private int count = 0;
CustomGridView3 adapter = this;
int hargax,qtyx,totalx;
public CustomGridView3(Context context, ArrayList<ListItem> listData) {
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
this.context = context;
}
@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(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.afterlogin_product_gridview, null);
holder = new ViewHolder();
holder.headlineView = (TextView) convertView.findViewById(R.id.nama_produk);
holder.teaserView = (TextView) convertView.findViewById(R.id.harga);
holder.imageView = (ImageView) convertView.findViewById(R.id.img_produk);
holder.cmdMinus = (Button) convertView.findViewById(R.id.btn_min);
holder.cmdPlus = (Button) convertView.findViewById(R.id.btn_plus);
holder.qty = (TextView) convertView.findViewById(R.id.lbl_qty);
holder.layout1 = (LinearLayout) convertView.findViewById(R.id.layout1);
holder.harga = (TextView) convertView.findViewById(R.id.harga);
holder.satuan = (TextView) convertView.findViewById(R.id.satuan);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final ListItem newsItem = listData.get(position);
String satuan = newsItem.getSatuan().toString();
String harga = newsItem.getReporterName().toString();
harga = "Rp. " + harga + "/" + satuan;
holder.headlineView.setText(newsItem.getHeadline().toUpperCase());
holder.teaserView.setText(harga);
SharedPreferences pref = context.getSharedPreferences("MyPref", 0); // 0 - for private mode
Integer qtys = Integer.parseInt(pref.getString(newsItem.getHeadline() + "_003", "0"));
newsItem.setQuantity(qtys);
holder.qty.setText(String.valueOf(newsItem.getQuantity()));
String a = newsItem.getUrl();
holder.cmdMinus.setTag(position);
holder.cmdPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = newsItem.getQuantity();
count++;
newsItem.setQuantity(count);
holder.qty.setText("" + count);
SharedPreferences pref = context.getSharedPreferences("MyPref", 0); // 0 - for private mode
SharedPreferences.Editor editor = pref.edit();
editor.putString(newsItem.getHeadline() + "_001", newsItem.getReporterName()); // harga
editor.putString(newsItem.getHeadline() + "_002", newsItem.getHeadline()); //nama
editor.putString(newsItem.getHeadline() + "_003", String.valueOf(count)); //quantity
editor.putString(newsItem.getHeadline() + "_004", newsItem.getSatuan()); //satuan
editor.putString(newsItem.getHeadline() + "_005", newsItem.getUrl()); //url
editor.commit();
}
});
holder.cmdMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = newsItem.getQuantity();
count--;
newsItem.setQuantity(count);
holder.qty.setText("" + count);
SharedPreferences pref = context.getSharedPreferences("MyPref", 0); // 0 - for private mode
SharedPreferences.Editor editor = pref.edit();
editor.putString(newsItem.getHeadline() + "_001", newsItem.getReporterName()); // harga
editor.putString(newsItem.getHeadline() + "_002", newsItem.getHeadline()); //nama
editor.putString(newsItem.getHeadline() + "_003", String.valueOf(count)); //quantity
editor.putString(newsItem.getHeadline() + "_004", newsItem.getSatuan()); //satuan
editor.putString(newsItem.getHeadline() + "_005", newsItem.getUrl()); //url
editor.commit();
if(count == 0)
{
SharedPreferences prefs = context.getSharedPreferences("MyPref", 0); // 0 - for private mode
SharedPreferences.Editor editors = prefs.edit();
editors.remove(newsItem.getHeadline() + "_001");
editors.remove(newsItem.getHeadline() + "_002");
editors.remove(newsItem.getHeadline() + "_003");
editors.remove(newsItem.getHeadline() + "_004");
editors.remove(newsItem.getHeadline() + "_005");
editors.commit();
listData.remove(position);
adapter.notifyDataSetChanged();
}
}
});
holder.qty.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
hargax = Integer.parseInt(newsItem.getReporterName());
qtyx = newsItem.getQuantity();
hargax = hargax * qtyx;
if (context instanceof AfterLogin_Cart)
{
((AfterLogin_Cart)context).getPrice();
}
}
@Override
public void afterTextChanged(Editable s) {
***** Change TextView from Parent Activity *******
}
});
if (holder.imageView != null) {
//new ImageDownloaderTask(holder.imageView).execute(newsItem.getUrl());
Picasso
.with(context)
.load(a)
.fit()
.noFade()
.into(holder.imageView);
}
return convertView;
}
static class ViewHolder {
TextView headlineView;
TextView teaserView;
ImageView imageView;
TextView qty;
Button cmdPlus,cmdMinus;
LinearLayout layout1;
TextView harga,satuan;
}
從addTextChangeListener,我想改變家長的活動TextView的價值。我已經在尋找的只是執行某種方法。
if (context instanceof AfterLogin_Cart)
{
((AfterLogin_Cart)context).getPrice();
}
您可以創建適配器作爲一個內部類在你活動課,在那裏你可以很容易地到達TextView的和改變它。 –
您可以在您的適配器中將'TextWatcher'作爲變量。然後,在創建適配器時,您從實現「TextWatcher」的活動傳遞此參數。最後,在適配器內部,您只需將所需的方法委託給'TextWatcher'實例 – x0r
@EliranTutia我會試試 –