此代码是我的BaseAdapter的部分代码,它可以调整我的可扩展列表视图。
此应用程序通常是可扩展ListView。
我的目标是在用户长按
后将textview颜色设置为蓝色在我的listview的父布局中,我有2个字符串,持有人正在解决它们。
我设法在所需位置设置onClickListener并设置所需的功能。 事情是,现在我需要同时发生2个功能: 长按时: 1.复制到剪贴板(孩子的上下文) 2.将复制的父文本视图行绘制为一种颜色,以指示该行已被复制
现在的问题是我在弄清楚如何实现它时遇到了麻烦。 我也知道设置textview' sbg颜色的代码
" TextView的" .setBackgroundColor(Color.parseColor("#FF5555&#34)); " 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:/
logcat消息:
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 ;
}
}
//吓坏我了
答案 0 :(得分:0)
在onLongClick()
中你应该能够做到这样的事情:
Textview textView;
if (view instanceof TextView) {
textView = (TextView) view;
}
// change text view's color