добавить кнопку в список - PullRequest
0 голосов
/ 02 мая 2011

Я хочу добавить кнопку в каждый элемент списка, и когда пользователь нажимает ее, чтобы сделать телефонный звонок. Но когда пользователь нажимает текст, ничего не происходит .. это возможно? Это мой код:

public class museum extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.museum); 


        ListView list = (ListView) findViewById(R.id.list);

        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();


        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name", "Archaeological Museum of Chania");
        map.put("address", "Chalidon 21 , Chania");

        mylist.add(map);
        map = new HashMap<String, String>();
        map.put("name", "Byzantine Museum");
        map.put("address", "Theotokopoulou 82 , Chania");

        mylist.add(map);
        // ...
        ListAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.row_museum,
                    new String[] {"name", "address"}, new int[] {R.id.TextView01, R.id.TextView02});
        list.setAdapter(mSchedule);



        list.setOnItemClickListener(new OnItemClickListener() {
         public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {
                switch( position )
                {
                   case 0: 
                            break;
                   case 1:  
                        break;
                   case 2:  
                        break;
                   case 3:  
                        break;


                }
            }
          });
    }
}

Ответы [ 3 ]

1 голос
/ 02 мая 2011

Я могу сделать. Для этого

  1. Вам потребуется создать файл макета для строки списка, содержащей текстовое представление и кнопку.
  2. Используйте этот макет внутри настроенного ArrayAdapter.

См., Например, на этом сайте .

0 голосов
/ 02 мая 2011

вы можете использовать пользовательский адаптер, например, так:

ListView lv_ArchivePartylist;

ArrayList<Parties> select_archived_party;

lv_ArchivePartylist = (ListView)findViewById(R.id.archive_ListView01);
        lv_ArchivePartylist.setOnItemClickListener(new OnItemClickListener()
            {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
                // TODO Auto-generated method stub
                if(view.findViewById(R.id.img_chkbox_archive).getVisibility()==TextView.GONE)
                {
                    view.findViewById(R.id.img_chkbox_archive).setVisibility(TextView.VISIBLE);
                    Toast.makeText(ctx_archive, "Name="+archived_parties.get(position).getPartyTitle(), Toast.LENGTH_SHORT).show();
select_archived_party.add(archived_parties.get(position));
}
}

});

Затем, вместо просмотра текста, используйте кнопки, и на отдельном событии щелчка этой кнопки вы можете написать код для вызова ... Надеждаэто помогает: -)

0 голосов
/ 02 мая 2011

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

public class CustomListAdapter extends BaseAdapter {
private  ArrayList<SingleElementDetails> allElementDetails;
private Context con; 
private LayoutInflater mInflater;

public CustomListAdapter(Context context, ArrayList<SingleElementDetails> results) {
    allElementDetails = results;
    mInflater = LayoutInflater.from(context);
    con=context;
       public View getView(int position, View convertView, ViewGroup parent) 
{
    convertView = mInflater.inflate(R.layout.listview1, null);

    Button bt=(Button)convertView.findViewById(R.id.bt);
    TextView textview1= (TextView) convertView.findViewById(R.id.dishname_entry);
    TextView textview2 = (TextView) convertView.findViewById(R.id.category_entry);
    TextView textview3=(TextView)convertView.findViewById(R.id.description_entry);
    textview1.setText(allElementDetails.get(position).getDishName());
    textview2.setText(allElementDetails.get(position).getCategory());
    textview3.setText(allElementDetails.get(position).getDescription());    


    bt.setOnClickListener(new OnClickListener(){


        public void onClick(View v) {
            Intent intent=new Intent(con,MainActivity.class);
            con.startActivity(intent);

        }

    });
    return convertView;
}    

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...