这段代码是来自我的BaseAdapter的部分代码,它适应了我的可扩展列表视图。
这个应用程序通常是一个可扩展的ListView。
我的目标是在用户长时间单击后将文本视图颜色设置为蓝色
在我的列表视图的父布局中,我得到了两个字符串,持有者正在处理这两个字符串。
我设法在所需位置设置了onClickListener,并设置了所需功能。问题是,现在我需要两个函数同时发生:当长时间单击时: 1.复制到剪贴板(子对象的上下文) 2.将复制的父文本视图的行刷成一种颜色,以指示该行已被复制
现在的问题是我不知道如何实现它。我还知道设置textview的bg颜色的代码
"TextView".setBackgroundColor(Color.parseColor("#FF5555"));"TextView".setHighlightColor(Color.BLUE);
等等。
提前感谢您的回复/帮助/协助,干杯。
static class ViewHolder {
TextView rname_parent;
TextView city_parent;
}
@Override
public View getGroupView(int parent, boolean isExpanded, View convertView, ViewGroup parentView) {
Group group = (Group) getGroup(parent);
ViewHolder holder;
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.parent_layout, parentView, false);
//}
//convertView.setOnLongClickListener(new LongClick(group.getName()));
holder = new ViewHolder();
holder.rname_parent = (TextView) convertView.findViewById(R.id.rname_parent_layout);
holder.city_parent = (TextView) convertView.findViewById(R.id.city_parent_layout);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.rname_parent.setText(group.getName());
holder.rname_parent.setTypeface(null, Typeface.BOLD_ITALIC);
holder.rname_parent.setTextSize(27);
holder.city_parent.setText(group.getCity());
return convertView;
}
//TODO ########################################################################
//TODO ##############this.content = The clipBoard String#######################
//TODO ########################################################################
@SuppressWarnings("deprecation")
class LongClick implements View.OnLongClickListener {
private String content;
public LongClick (String content,String c2, String c3, String c4, String c5,String c6,String c7,String c8,String c9) {
this.content = content+" "+c2+content;
}
// constructor used to obtain the item's valu
@Override
public boolean onLongClick (View View){
ClipboardManager clipboard = (ClipboardManager)
View.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
// Scrapbook Manager
clipboard.setText(content);
// set the value of the scrapbook item of
Toast mToast = Toast.makeText(View.getContext(), "Copy to the Clipboard", Toast.LENGTH_SHORT);
mToast.show();
return true ;
}
}
//this method will return a view for each sub category
@Override
public View getChildView(final int parent, int childPosition, boolean LastChild, View convertView, ViewGroup parentView) {
Child child = (Child) getChild(parent, childPosition);
ArrayList<Child> ch = getAllchildren(parent);
// if there is no current view for the specific child this will create it
if(convertView == null){
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.child_layout, parentView,false);
}
convertView.setOnLongClickListener(new LongClick(ch.get(0).getName(), ch.get(1).getName(), ch.get(2).getName(), ch.get(3).getName(), ch.get(4).getName(), ch.get(5).getName(), ch.get(6).getName(), ch.get(7).getName(), ch.get(8).getName()));
/*
convertView.isClickable();
convertView.setLongClickable(true);
convertView.setOnClickListener(new View.OnClickListener() {
ArrayList<Child> ch = getAllchildren(parent);
@Override
public void onClick(View v) {
new LongClick(ch.get(0).getName(), ch.get(1).getName(), ch.get(2).getName(), ch.get(3).getName(), ch.get(4).getName(), ch.get(5).getName(), ch.get(6).getName(), ch.get(7).getName(), ch.get(8).getName());
}
//new LongClick(ch.get(0).getName(), ch.get(1).getName(), ch.get(2).getName(), ch.get(3).getName(), ch.get(4).getName(), ch.get(5).getName(), ch.get(6).getName(), ch.get(7).getName(), ch.get(8).getName())
}
);
convertView.setOnLongClickListener(new View.OnLongClickListener() {
ArrayList<Child> ch = getAllchildren(parent);
@Override
public boolean onLongClick(View v) {
new LongClick(ch.get(0).getName(), ch.get(1).getName(), ch.get(2).getName(), ch.get(3).getName(), ch.get(4).getName(), ch.get(5).getName(), ch.get(6).getName(), ch.get(7).getName(), ch.get(8).getName());
return true;
}
});
*/
TextView child_textview = (TextView) convertView.findViewById(R.id.child_txt);
child_textview.setText(child.getName().toString());
return convertView;
}尝试了TBridges的解决方案,添加了实现和logcat错误,很明显我做错了什么,显然我没有将OnLongClick视图寻址到确切的TextView :/
日志消息:
Attempt to invoke virtual method 'void android.widget.TextView.setBackgroundColor(int)' on a null object reference新的实现:
@Override
public boolean onLongClick (View View){
ClipboardManager clipboard = (ClipboardManager)
View.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
// Scrapbook Manager
clipboard.setText(content);
// set the value of the scrapbook item of
Toast mToast = Toast.makeText(View.getContext(), "Copy to the Clipboard", Toast.LENGTH_SHORT);
mToast.show();
//ViewHolder holder;
// holder = new ViewHolder();
//holder.rname_parent = (TextView) View.findViewById(R.id.rname_parent_layout);
TextView tv = (TextView) View.findViewById(R.id.rname_parent_layout);
if (View instanceof TextView) {
tv = (TextView) View;
}
tv.setBackgroundColor(Color.parseColor("#FF5555"));
return true ;
}
}//吓死我了
发布于 2015-09-27 08:25:41
在onLongClick()中,您应该能够执行以下操作:
Textview textView;
if (view instanceof TextView) {
textView = (TextView) view;
}
// change text view's colorhttps://stackoverflow.com/questions/32803261
复制相似问题