android-ListView短时间闪烁在监听器上
在omclick()方法中,我加载新活动。我的ListView项在OnItemClick()上闪烁(我的意思是,亮度有一点变化或其他什么-不知道如何正确地说),但只闪烁片刻,然后在加载新活动之前返回到以前的外观。我希望在加载新活动之前,ListView项始终处于闪烁状态,而不是一瞬间。怎么做?您所说的闪烁可能是项目选择器。对于您来说,您希望您的最佳选择可能是禁用默认选择器并自己手动实现它 因此,在适配器的getView中,我将onClickListener设置为convertView,当触发时,将其背景颜色设置为蓝色或任何颜色,然后执行该操作。这样,在加载下一个活动之前,它将保持该颜色。这就是解决方案的要点,如果您需要更多帮助,请告诉我,我将编辑此答案android-ListView短时间闪烁在监听器上,android,listview,onitemclicklistener,onitemclick,Android,Listview,Onitemclicklistener,Onitemclick,在omclick()方法中,我加载新活动。我的ListView项在OnItemClick()上闪烁(我的意思是,亮度有一点变化或其他什么-不知道如何正确地说),但只闪烁片刻,然后在加载新活动之前返回到以前的外观。我希望在加载新活动之前,ListView项始终处于闪烁状态,而不是一瞬间。怎么做?您所说的闪烁可能是项目选择器。对于您来说,您希望您的最佳选择可能是禁用默认选择器并自己手动实现它 因此,在适配器的getView中,我将onClickListener设置为convertView,当触发时,
编辑:对于下面的第二条评论,请尝试在适配器中使用公共int跟踪单击的列表项,并在“活动/恢复片段”中将其重置为类似-1的值。然后在适配器的getView中检查此列表项是否为选定项,设置背景颜色,否则将其返回为白色或默认颜色。您可以使用View.setOnClickListener进行此操作 将意图传递到下一页时,请更改listview项的背景色
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
arg0.setBackgroundColor(Color.RED);
Intent intent = new Intent(MainActivity.this, CheckinoutPage.class);
startActivity(intent);
}
});
}
将ListView适配器类设置为
public class MainListViewAdapter extends BaseAdapter {
Context mContext;
LayoutInflater inflater;
private List<DetailsPOJO> details = null;
private ArrayList<DetailsPOJO> arraylist;
public MainListViewAdapter(Context context, List<DetailsPOJO> details) {
mContext = context;
this.details = details;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList<DetailsPOJO>();
this.arraylist.addAll(details);
}
public class ViewHolder {
TextView checkindatetime, checkoutdatetime, latitudein, longitudein, addressin;
}
@Override
public int getCount() {
return details.size();
}
@Override
public Object getItem(int position) {
return details.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.maincustomrow, null);
// Locate the TextViews in listview_item.xml
holder.checkindatetime = (TextView) view.findViewById(R.id.checkindatetime);
holder.latitudein = (TextView) view.findViewById(R.id.latin);
holder.longitudein = (TextView) view.findViewById(R.id.longin);
holder.addressin = (TextView) view.findViewById(R.id.addin);
holder.checkoutdatetime = (TextView) view.findViewById(R.id.checkoutdatetime);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.checkindatetime.setText(details.get(position).getCheckindatetime());
holder.latitudein.setText(details.get(position).getLatitudein());
holder.longitudein.setText(details.get(position).getLongitudein());
holder.addressin.setText(details.get(position).getAddressin());
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//This part gives color on click till the next page loads
arg0.setBackgroundColor(Color.RED);
String checkindate = details.get(position).getCheckindatetime();
Intent intent = new Intent(getApplicationContext(), LatLongDeatils.class);
intent.putExtra("checkindate", checkindate);
startActivity(intent);
}
});
return view;
}
公共类MainListViewAdapter扩展了BaseAdapter{
语境;
充气机;
私有列表详细信息=null;
私有ArrayList ArrayList;
公共MainListViewAdapter(上下文、列表详细信息){
mContext=上下文;
this.details=详细信息;
充气器=从(mContext)开始的充气器;
this.arraylist=新的arraylist();
this.arraylist.addAll(详细信息);
}
公共类视图持有者{
TextView checkindatetime、checkoutdatetime、latitudein、longitudein、addressin;
}
@凌驾
public int getCount(){
返回details.size();
}
@凌驾
公共对象getItem(int位置){
返回详细信息。获取(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图视图、视图组父视图){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
视图=充气机。充气(R.layout.maincustomrow,空);
//在listview_item.xml中找到文本视图
holder.checkindatetime=(TextView)view.findViewById(R.id.checkindatetime);
holder.latitudein=(TextView)view.findViewById(R.id.latin);
holder.longitudein=(TextView)view.findViewById(R.id.longin);
holder.addressin=(TextView)view.findViewById(R.id.addin);
holder.checkoutdatetime=(TextView)view.findViewById(R.id.checkoutdatetime);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.checkindatetime.setText(details.get(position.getCheckindatetime());
holder.latitudein.setText(details.get(position.getLatitudein());
holder.longitudein.setText(details.get(position.getLongitudein());
holder.addressin.setText(details.get(position.getAddressin());
view.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//此部分在单击时显示颜色,直到加载下一页
arg0.setBackgroundColor(颜色:红色);
String checkindate=details.get(position.getCheckindatetime();
Intent Intent=newintent(getApplicationContext(),LatLongDeatils.class);
意向。额外(“checkindate”,checkindate);
星触觉(意向);
}
});
返回视图;
}
}我知道您试图在单击列表中的项目时使其闪烁,并将闪烁直到活动开始。对吧?也许不会“眨眼”,但要保持眨眼。我的意思是,它需要一些时间来开始新的活动(或者对于我放入onItemClick()中的任何操作),我希望它更改亮度(或者我们通常单击项目时更改的内容),并保持类似于点击的状态,直到onItemClick()中的操作完成。我不知道。也许你可以分享你的代码,这样其他人可以帮助你you@mubeen这个想法很简单(也许我没有解释清楚,但我会用其他的话再试一次)。当您在ListView中点击某个项目时,它通常会改变其外观。然后事情发生了。在我的例子中,它只改变了一会儿,然后回到正常状态,然后发生了一些事情。我需要它保持第二个“点击”方式,直到“某些事情”发生。例如,如果一个项目是蓝色的,当它被点击时,它会变成红色,我需要它一直保持红色,直到OnItemClick()中的所有事情发生,而不会在几毫秒内返回蓝色,这是一个很好的解决方案,但在我的情况下,我不会改变颜色。我在上面讲了颜色,它更容易理解。我需要它来改变它在onItemClick()时通常改变的方式(它看起来几乎一样,但像是在一个非常透明的黑色窗帘后面…例如,白色变得有点灰(不记得其他颜色)。我不知道如何解释这种效果,但当onClick()时,它几乎总是这样在很多应用程序中。我本可以附上示例图片,但没有这样的功能:(只是尝试按照您的方式进行,但我不知道如何在返回到该活动时返回其以前的颜色(使用actionbar上的backbutton和navigationbutton)作为对第二条评论的响应,请尝试在适配器中使用公共int跟踪单击的列表项,并在Activity/Fragments onResume中将其重置为类似-1的值。然后在适配器的getView中检查此列表项是否为所选列表项,将背景设置为
public class MainListViewAdapter extends BaseAdapter {
Context mContext;
LayoutInflater inflater;
private List<DetailsPOJO> details = null;
private ArrayList<DetailsPOJO> arraylist;
public MainListViewAdapter(Context context, List<DetailsPOJO> details) {
mContext = context;
this.details = details;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList<DetailsPOJO>();
this.arraylist.addAll(details);
}
public class ViewHolder {
TextView checkindatetime, checkoutdatetime, latitudein, longitudein, addressin;
}
@Override
public int getCount() {
return details.size();
}
@Override
public Object getItem(int position) {
return details.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.maincustomrow, null);
// Locate the TextViews in listview_item.xml
holder.checkindatetime = (TextView) view.findViewById(R.id.checkindatetime);
holder.latitudein = (TextView) view.findViewById(R.id.latin);
holder.longitudein = (TextView) view.findViewById(R.id.longin);
holder.addressin = (TextView) view.findViewById(R.id.addin);
holder.checkoutdatetime = (TextView) view.findViewById(R.id.checkoutdatetime);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.checkindatetime.setText(details.get(position).getCheckindatetime());
holder.latitudein.setText(details.get(position).getLatitudein());
holder.longitudein.setText(details.get(position).getLongitudein());
holder.addressin.setText(details.get(position).getAddressin());
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//This part gives color on click till the next page loads
arg0.setBackgroundColor(Color.RED);
String checkindate = details.get(position).getCheckindatetime();
Intent intent = new Intent(getApplicationContext(), LatLongDeatils.class);
intent.putExtra("checkindate", checkindate);
startActivity(intent);
}
});
return view;
}