как вставить флажок в список - PullRequest
1 голос
/ 28 ноября 2011

У меня есть этот список ... Я должен поставить флажок в качестве последнего элемента (где слово "уведомление") ... Я не знаю, как это сделать ..., потому что каждый элемент имеет свой значок ... но последнее, что я должен поставить флажок ....

enter image description here

enter code here

открытый класс Listview расширяет Activity {

protected static final Intent CopyOfListview = null;
static ListView listView;


static public class BackgroundWorker extends AsyncTask<Void, Person, Void> {

    @SuppressWarnings("unchecked")
    @Override
    protected void onPreExecute () {
        // Prima di iniziare a inserire gli elementi svuotiamo l'adapter
        ( ( ArrayAdapter<Person> ) listView.getAdapter() ).clear();
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground ( Void... params ) {

        // Qui dentro si possono mettere le operazioni che potrebbero
        // rallentare il caricamento della listview, come ad sempio il
        // caricamento da db degli oggetti

        Person[] people = { new Person( " Privacy",null, R.drawable.freccetta ) };
        Person[] people1 = {new Person( " Visualizzazione", null, R.drawable.freccetta )};
        Person[] people2=  { new Person( " Notifiche", null, R.drawable.freccetta)};

        // riempimento casuale della lista delle persone
        Random r = new Random();

        for ( int i = 0; i < 1; i++ ) {
            // Pubblichiamo il progresso
            publishProgress( people);
            publishProgress( people1);
            publishProgress( people2);

        }

        return null;
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void onProgressUpdate ( Person... values ) {
        // Aggiungiamo il progresso pubblicato all'adapter
        ( ( ArrayAdapter<Person> ) listView.getAdapter() ).add( values[0] );
        super.onProgressUpdate( values );
    }

}

@Override
public void onCreate ( final Bundle savedInstanceState ) {
    super.onCreate( savedInstanceState );
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView( R.layout.main );


    listView = ( ListView ) findViewById( R.id.personListView );

    listView.setAdapter( new PersonAdapter( this, R.layout.row_item, new ArrayList<Person>() ) );

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Person p = (Person) parent.getItemAtPosition(position);

            switch(position) {
            case 0:
                Activity_privacy();
            //  startActivity(CopyOfListview);
                //onCreate1(savedInstanceState);
//  setContentView(R.layout.main1);
            break;
            case 1:
            setContentView(R.layout.main2);
            break;
            case 2:
            setContentView(R.layout.main3);
            }
            }
    });

    new BackgroundWorker().execute();
}


protected void Activity_privacy()
{
    Intent i = new Intent(this, CopyOfListview.class);
    startActivity(i);

}

}

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Есть ли какая-то причина, по которой добавление вида нижнего колонтитула не будет работать?

Если по какой-то причине это неприемлемое решение, единственное, о чем я могу подумать, - это создатьПользовательский класс, который реализует интерфейс Adapter .Он должен будет возвращать два разных типа вида (т.е. getViewTypeCount() вернет 2) и возвращает разные виды из getView() в зависимости от позиции, для которой вы запрашиваете представление.

0 голосов
/ 28 ноября 2011

Пусть ваш класс PersonAdapter возвращает представление кнопки, когда getView вызывается для последнего элемента списка.Убедитесь, что getCount возвращает правильный размер, когда вы делаете это.

Вам также может быть полезно, если адаптер использует набор фабрик представлений вместо List .

...