I have a listview that contains a checkbox next to each item. I want to move items to the top or bottom of the list by checking or unchecking them- if I check the item, move to the top and I uncheck, move to the bottom.
I have tried to implement different sets of code, including setSelection(int position). I have been focusing on the If and Else statements on the Adapter Java Class since they pertain to what happens when you check and uncheck the checkbox. When I do try to implement the setSelection(int position) method, I get error messages.
Main Activity Java Class:
public class MainActivity extends AppCompatActivity {
ArrayList<String> selectedItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
selectedItems = new ArrayList<String>();
ListView chl = (ListView) findViewById(R.id.languageselector);
chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
String[] items = {"English", "Chinese", "French", "German", "Italian", "Khmer"};
Adapter adapter=new Adapter(this,items);
chl.setAdapter(adapter);
chl.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
int item_position=i;
}
});
}
Adapter Java Class:
public class Adapter extends BaseAdapter {
String[] items;
LayoutInflater inflater;
ArrayList selectedItems;
Activity activity;
Adapter(Activity activity, String[] items){
this.items=items;
inflater=activity.getLayoutInflater();
selectedItems = new ArrayList<String>();
this.activity=activity;
}
@Override
public int getCount() {
return items.length;
}
@Override
public String getItem(int i) {
return items[i];
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
View v = view;
if(v == null){
v = inflater.inflate(R.layout.checkboxlayout,null);
}
TextView textview_languages=(TextView)v.findViewById(R.id.Textview_languages);
textview_languages.setText(items[i]);
final CheckedTextView checkedTextView=(CheckedTextView)v.findViewById(R.id.checkbox);
checkedTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!checkedTextView.isChecked()){
checkedTextView.setChecked(true);
selectedItems.add(items[i]);
}
else {
checkedTextView.setChecked(false);
selectedItems.remove(items[i]);
}
}
});
return v;
}
}
Aucun commentaire:
Enregistrer un commentaire