Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android-ListView短时间闪烁在监听器上_Android_Listview_Onitemclicklistener_Onitemclick - Fatal编程技术网

android-ListView短时间闪烁在监听器上

android-ListView短时间闪烁在监听器上,android,listview,onitemclicklistener,onitemclick,Android,Listview,Onitemclicklistener,Onitemclick,在omclick()方法中,我加载新活动。我的ListView项在OnItemClick()上闪烁(我的意思是,亮度有一点变化或其他什么-不知道如何正确地说),但只闪烁片刻,然后在加载新活动之前返回到以前的外观。我希望在加载新活动之前,ListView项始终处于闪烁状态,而不是一瞬间。怎么做?您所说的闪烁可能是项目选择器。对于您来说,您希望您的最佳选择可能是禁用默认选择器并自己手动实现它 因此,在适配器的getView中,我将onClickListener设置为convertView,当触发时,

在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;
}