2016-11-23 35 views
0

我想更改TextWatcher(它是在ListView中)的holder.title文本。什麼是最好的方法來做到這一點? 我無法將holder.title設置爲final,我需要另一個解決方案。從TextWatcher內部檢索ListView內的其他視圖

public View getView(int position, View convertView, ViewGroup parent){ 

    View ListItem = convertView; 

    Holder holder; 

    if (ListItem == null) { 

     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     ListItem = inflater.inflate(layoutResourceId, parent, false); 

     holder = new Holder(); 
     holder.banner = (ImageView)ListItem.findViewById(R.id.banner); 
     holder.title = (TextView) ListItem.findViewById(R.id.titleText); 
     holder.editText = (EditText) ListItem.findViewById(R.id.edittext); 

     ListItem.setTag(holder); 
    } else { 
     holder = (Holder) ListItem.getTag(); 
    } 

    TextWatcher textWatcher = (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) { 
      holder.title.setText(s.toString() + " Title") // I want to access holder.title to do this.. 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

    return ListItem; 
} 

回答

0

我固定它通過創建實現TextWatcher一個新的類,並加入我自己的方法給它,這樣我可以通過我的Holder對象到它..

public class MyTextWatcher implements TextWatcher { 

    public MyClass.Holder holder; 

    public void setView(CharityAmountAdapter.Holder newHolder){ 
     holder = newHolder; 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     holder.title.setText(s.toString() + "Test"); 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}