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