1. Specify item can not click event
IsEnabled Adapter override the method:
@Override
public boolean isEnabled(int position) {
if(position == 4) {
return false;
}
return super.isEnabled(position);
}
postion == 4, can not click, that is, no animation.
2. Item of interior layout and the like if a response is required CheckBox
Item layout needs need to add android: descendantFocusability = "blocksDescendants" this attribute, sub-view events can respond.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:descendantFocusability="blocksDescendants"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="60dp">
<CheckBox
android:id="@+id/task_complete"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
3. ListView classification display
Mainly in return a different view in getview time depending on the position.
public class TaskListAdapter extends BaseAdapter {
private Context mContext;
private List<String> mTaskList;
private List<String> mTaskList2;
public TaskListAdapter() {
super();
}
public TaskListAdapter(Context context, List<String> data,List<String> data2) {
mContext = context;
mTaskList = data;
mTaskList2 = data2;
}
@Override
public int getCount() {
return mTaskList.size() + 1 + mTaskList2.size();
}
@Override
public Object getItem(int position) {
if(position == mTaskList.size())
return null;
if(position < mTaskList.size()) {
return mTaskList.get(position);
} else {
return mTaskList2.get(position - mTaskList.size() -1);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
//if(position == mTaskList.size()) {
// convertView = layoutInflater.inflate(R.layout.item_task_separator, null);
//}
//if(convertView == null) {
viewHolder = new ViewHolder();
if(position == mTaskList.size()) {
convertView = layoutInflater.inflate(R.layout.item_task_separator, null);
} else {
convertView = layoutInflater.inflate(R.layout.item_task_layout, null);
viewHolder.title = (TextView) convertView.findViewById(R.id.task_title);
viewHolder.desc = (TextView) convertView.findViewById(R.id.task_desc);
viewHolder.due_date = (TextView) convertView.findViewById(R.id.task_due_date);
viewHolder.due_time = (TextView) convertView.findViewById(R.id.task_due_time);
viewHolder.complete = (CheckBox) convertView.findViewById(R.id.task_complete);
if(true) {
viewHolder.select = (CheckBox) convertView.findViewById(R.id.task_select);
viewHolder.select.setVisibility(View.VISIBLE);
}
convertView.setTag(viewHolder);
}
//} else if(position != mTaskList.size()){
// viewHolder = (ViewHolder) convertView.getTag();
//}
if(position != mTaskList.size()) {
String taskItem = (String) getItem(position);
viewHolder.title.setText(taskItem);
//viewHolder.desc.setText(taskItem.desc);
Calendar calendar = Calendar.getInstance();
//calendar.setTimeInMillis(taskItem.due_date);
String formatDate = "MMM dd";
if(Locale.CHINA.getCountry().equals(Locale.getDefault().getCountry())) {
formatDate = "MM月dd日";
}
SimpleDateFormat format = new SimpleDateFormat(formatDate, Locale.getDefault());
Log.d("zhouyong", "calendar = " + calendar.toString());
Log.d("zhouyong","display name = "+Locale.getDefault().getCountry() + " "+Locale.CHINA.getCountry());
viewHolder.due_date.setText(format.format(calendar.getTime()));
format = new SimpleDateFormat("a hh:mm", Locale.getDefault());
viewHolder.due_time.setText(format.format(calendar.getTime()));
//viewHolder.complete.setChecked(taskItem.complete == 1 ? true : false);
viewHolder.complete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("zhouyong", "complete = " + ((CheckBox) v).isChecked());
}
});
}
return convertView;
}
private class ViewHolder {
TextView title;
TextView desc;
TextView due_date;
TextView due_time;
CheckBox complete;
CheckBox select;
}
}
4. ListView default display in what position
mListView.setSelection(position);
listview.post(new Runnable() {
@Override
public void run() {
listview.smoothScrollToPosition(position);
}
});
After setting the value of the adapter calls, or adapter.notifyDataSetChanged () after the call. smoothScrollToPosition animation effects.
5...