Android 如何在ListView中禁用以前的项

Android 如何在ListView中禁用以前的项,android,listview,custom-adapter,Android,Listview,Custom Adapter,我正在尝试开发一个活动,其中有一个由CustomAdapter组成的自定义listView 该列表由文本视图和编辑文本组成。EditText当单击时,它会自动获取系统时间 我想要的是,当一个特定的EditText被填充时,我想要禁用序列中所有前面(上面)的列表项 到目前为止,我已经尝试使用isEnabled()和arAllItemsEnabled()函数使用position返回相应的布尔值,但是没有成功 请帮我实现上述目标。 谢谢 这是我的CustomAdapter类 公共类SelectSt

我正在尝试开发一个活动,其中有一个由
CustomAdapter
组成的自定义
listView

该列表由
文本视图
编辑文本
组成。
EditText
当单击
时,它会自动获取系统时间

我想要的是,当一个特定的
EditText
被填充时,我想要禁用序列中所有前面(上面)的列表项

到目前为止,我已经尝试使用
isEnabled()
arAllItemsEnabled()
函数使用position返回相应的布尔值,但是没有成功

请帮我实现上述目标。

谢谢

这是我的CustomAdapter类

公共类SelectStnListByRoute扩展BaseAdapter实现View.OnClickListener{
语境;
阵列列表;
LayoutInflater LayoutInflater=null;
持票人持票人;
私人国际贸易;
public SelectStnListByRoute(上下文上下文,数组列表stnList){
超级();
this.context=上下文;
this.stnList=stnList;
layoutInflater=layoutInflater.from(上下文);
}
@凌驾
public int getCount(){
返回stnList.size();
}
@凌驾
公共对象getItem(int位置){
返回stnList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回stnList.indexOf(getItem(position));
}
public int getViewTypeCount(){
返回1;
}
@凌驾
公共布尔值areAllItemsEnabled(){
返回false;
}
@凌驾
公共布尔值isEnabled(整型位置){
如果(位置==位置){
返回false;
}
返回false;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组视图组){
int type=getItemViewType(位置);
StnNames stnDetails=stnList.get(位置);
viewHolder=新的viewHolder();
if(convertView==null){
convertView=LayoutFlater.充气(R.layout.footplate\u custome\u layout,null);
viewHolder.txtstname=(TextView)convertView.findViewById(R.id.txtStnCode);
viewHolder.txtstnar=(TextView)convertView.findViewById(R.id.txtArrivalTime);
viewHolder.txtStnDep=(TextView)convertView.findViewById(R.id.txtDepTime);
convertView.setTag(viewHolder);
viewHolder.txtstnar.setTag(stnDetails);
viewHolder.txtStnDep.setTag(stnDetails);
}否则{
viewHolder=(viewHolder)convertView.getTag();
viewHolder.txtstnar.setTag(stnDetails);
viewHolder.txtStnDep.setTag(stnDetails);
}
viewHolder.txtstname.setText(stnDetails.getStnCode());
viewHolder.txtstnar.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.e(“Position:,String.valueOf(Position));//这里我得到了单击的行项目的位置,我应该将Onclick false放在哪里,以便使用Position禁用上述所有字段?
}
});
viewHolder.txtStnDep.setOnClickListener(此);
viewHolder.txtstnar=(TextView)convertView.findViewById(R.id.txtArrivalTime);
if(stnDetails.getArrivalTime()!=null){
viewHolder.txtstnar.setText(stnDetails.getArrivalTime());
}否则{
viewHolder.txtstnar.setText(“”);
}
if(stnDetails.getDeptTime()!=null){
viewHolder.txtstnep.setText(stnDetails.getDeptTime());
}否则{
viewHolder.txtStnDep.setText(“”);
} 
返回视图;
}
类视图持有者{
TextView txtstname、txtstnar、txtstnep;
int-ref;
}
@凌驾
公共void onClick(视图){
int id=view.getId();
开关(id){
案例TXT到达时间:
TextView textViewArrVal=(TextView)view.findViewById(R.id.txtArrivalTime);
textViewArrVal.setClickable(假);
StnNames listItemsArrr=(StnNames)textViewArrVal.getTag();
如果(listItemsArrr.getArrivalTime()!=getCurrentTime()){
setArrivalTime(getCurrentTime());
如果(listItemsArrr.getArrivalTime()!=null){
int position=textViewArrVal.getSelectionStart();
textViewArrVal.setText(listItemsArrr.getArrivalTime());
}否则{
text视图arrval.setText(“”);
}
}
打破
案例txtDepTime:
TextView textViewDepVal=(TextView)view.findViewById(R.id.txtDepTime);
StnNames listItemsDepp=(StnNames)textViewDepVal.getTag();
如果(listItemsDepp.getDeptTime()!=getCurrentTime()){
listItemsDepp.setDeptTime(getCurrentTime());
如果(listItemsDepp.getDeptTime()!=null){
textViewDepVal.setText(listItemsDepp.getDeptTime());
}否则{
textViewDepVal.setText(“”);
}
}
打破
违约:
打破
}
}
公共字符串getCurrentTime(){
日历=Calendar.getInstance();
SimpleDataFormat mdformat=新的SimpleDataFormat(“HH:mm:ss”);
字符串arrDate=mdformat.format(calendar.getTime());
返回日期;
}

}
获取单击的行的位置,然后将小于单击位置的位置设置为onclick false

详情如下:

viewHolder.txtStnArr.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.e("Position: " , String.valueOf(position)); 
            for (int i = 0; i < position; i++) {
                  viewHolder.txtStnArr.setEnable(false);
             }
             notifyDataSetChanged();
        }
    });
viewHolder.txtstnar.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.e(“位置
int mButtonSelected = -1;
 @Override
public boolean isEnabled(int position) {
    if(position<mButtonSelected){
        return false;
    }
    return true;
}
mButtonSelected = position;
notifyDataSetChanged();
public class SelectStnListByRoute extends BaseAdapter {
Context context;
ArrayList<StnNames> stnList;
LayoutInflater layoutInflater = null;
ViewHolder viewHolder;
private int mLastClicked;
private SQLiteDB sqLiteDB;
int mArrivalSelected = -1;
int mDepartSelected = -1;

public SelectStnListByRoute(Context context, ArrayList<StnNames> stnList) {
    super();
    this.context = context;
    this.stnList = stnList;
    layoutInflater = LayoutInflater.from(context);
    sqLiteDB = new SQLiteDB(context);
}

@Override
public int getCount() {
    return stnList.size();
}

@Override
public Object getItem(int position) {
    return stnList.get(position);
}

@Override
public long getItemId(int position) {
    return stnList.indexOf(getItem(position));
}

public int getViewTypeCount() {
    return 1;
}

@Override
public boolean areAllItemsEnabled() {
    return false;
}

@Override
public boolean isEnabled(int position) {
    if (position <= mArrivalSelected) {
        return false;
    }
    return true;
}

public boolean isEnabledd(int position) {
    if (position <= mDepartSelected) {
        return false;
    }
    return true;
}

@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
    int type = getItemViewType(position);
    StnNames stnDetails = stnList.get(position);
    viewHolder = new ViewHolder();
    if (convertView == null) {
        convertView = layoutInflater.inflate(R.layout.footplate_custome_layout, null);
        viewHolder.txtStnNAme = (TextView) convertView.findViewById(R.id.txtStnCode);
        viewHolder.txtStnArr = (TextView) convertView.findViewById(R.id.txtArrivalTime);
        viewHolder.txtStnDep = (TextView) convertView.findViewById(R.id.txtDepTime);
        convertView.setTag(viewHolder);
        viewHolder.txtStnArr.setTag(stnDetails);
        viewHolder.txtStnDep.setTag(stnDetails);


    } else {
        viewHolder = (ViewHolder) convertView.getTag();
        viewHolder.txtStnArr.setTag(stnDetails);
        viewHolder.txtStnDep.setTag(stnDetails);

    }


    viewHolder.txtStnNAme.setText(stnDetails.getStnCode());
    if (!isEnabled(position)) {
        if (position <= mArrivalSelected) {
            viewHolder.txtStnArr.setBackgroundColor(Color.parseColor("#ffa500"));
            viewHolder.txtStnArr.setEnabled(false);
            if (position < mArrivalSelected) {
                viewHolder.txtStnDep.setEnabled(false);
                viewHolder.txtStnDep.setBackgroundColor(Color.parseColor("#ffa500"));
            }
        }
    } else {
        viewHolder.txtStnArr.setEnabled(true);
        viewHolder.txtStnDep.setEnabled(true);
        viewHolder.txtStnArr.setBackgroundColor(Color.parseColor("#b4b4b4"));
        viewHolder.txtStnDep.setBackgroundColor(Color.parseColor("#b4b4b4"));
    }
    viewHolder.txtStnArr.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.e("Position: ", String.valueOf(position));
            mArrivalSelected = position;
            arrivalClick(view);
            notifyDataSetChanged();
        }
    });
    if (!isEnabledd(position)) {
        if (position <= mDepartSelected) {
            viewHolder.txtStnArr.setBackgroundColor(Color.parseColor("#ffa500"));
            viewHolder.txtStnDep.setBackgroundColor(Color.parseColor("#ffa500"));
            viewHolder.txtStnArr.setEnabled(false);
            viewHolder.txtStnDep.setEnabled(false);
        } else {
            viewHolder.txtStnArr.setEnabled(true);
            viewHolder.txtStnDep.setEnabled(true);
            viewHolder.txtStnArr.setBackgroundColor(Color.parseColor("#b4b4b4"));
            viewHolder.txtStnDep.setBackgroundColor(Color.parseColor("#b4b4b4"));
        }
    }
    viewHolder.txtStnDep.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.e("Position: ", String.valueOf(position));
            mDepartSelected = position;
            departureClick(view);
            notifyDataSetChanged();
        }
    });
    viewHolder.txtStnArr = (TextView) convertView.findViewById(R.id.txtArrivalTime);
    if (stnDetails.getArrivalTime() != null) {
        viewHolder.txtStnArr.setText(stnDetails.getArrivalTime());
    } else {
        viewHolder.txtStnArr.setText("");
    }


    if (stnDetails.getDeptTime() != null) {
        viewHolder.txtStnDep.setText(stnDetails.getDeptTime());
    } else {
        viewHolder.txtStnDep.setText("");
    }

    return convertView;
}

class ViewHolder {
    TextView txtStnNAme, txtStnArr, txtStnDep;
    StnNames pos;
    int ref;
}

public void arrivalClick(View view) {
    TextView textViewArrVal = (TextView) view.findViewById(R.id.txtArrivalTime);

    StnNames listItemsArrr = (StnNames) textViewArrVal.getTag();
    if (listItemsArrr.getArrivalTime() != getCurrentTime()) {
        listItemsArrr.setArrivalTime(getCurrentTime());
        int stnId = listItemsArrr.getStnId();
        String arrClick = "arrival";
        String upSideKm = listItemsArrr.getStnUpsideKm();
        String downsideKm = listItemsArrr.getStnDownSideKm();
        String arrTime = getCurrentTime();
           /*     sqLiteDB.open();
               *//* long abc = sqLiteDB.insertJourneySchedule(stnId,arrTime,"",userId,journeyId,latitute,longitute,journyDate,arrClick);*//*
               *//* long abcd = sqLiteDB.updateJourneySchedule(stnId,arrTime,"",userId,journeyId,latitute,longitute,journyDate,arrClick,downsideKm,upSideKm);
                Log.e("arrclick",String.valueOf(abcd));*//*
                sqLiteDB.close();*/
        if (listItemsArrr.getArrivalTime() != null) {
            int position = textViewArrVal.getSelectionStart();
            textViewArrVal.setText(listItemsArrr.getArrivalTime());

        } else {
            textViewArrVal.setText("");
        }
    }
}

public void departureClick(View view) {
    TextView textViewDepVal = (TextView) view.findViewById(R.id.txtDepTime);
    StnNames listItemsDepp = (StnNames) textViewDepVal.getTag();
    if (listItemsDepp.getDeptTime() != getCurrentTime()) {
        listItemsDepp.setDeptTime(getCurrentTime());
        String depTime = getCurrentTime();
        int stnId = listItemsDepp.getStnId();
        String depClick = "departure";
        String upSideKm = listItemsDepp.getStnUpsideKm();
        String downsideKm = listItemsDepp.getStnDownSideKm();
        sqLiteDB.open();
                /*long abc = sqLiteDB.insertJourneySchedule(stnId,"",depTime,userId,journeyId,latitute,longitute,journyDate,depClick);*/
                /*long abcd = sqLiteDB.updateJourneySchedule(stnId,"",depTime,userId,journeyId,latitute,longitute,journyDate,depClick,downsideKm,upSideKm);
                Log.e("depclick",String.valueOf(abcd));*/
        sqLiteDB.close();
        if (listItemsDepp.getDeptTime() != null) {
            textViewDepVal.setText(listItemsDepp.getDeptTime());
        } else {
            textViewDepVal.setText("");
        }
    }
}



public String getCurrentTime() {

    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat mdformat = new SimpleDateFormat("HH:mm:ss");
    String arrDate = mdformat.format(calendar.getTime());
    return arrDate;
}

}