2013-09-27 2 views
2

У меня есть просмотр и текстовое представление в Activity Когда я нажимаю значение в списке, этот выбранный элемент будет отображаться в текстовом виде. Я приложил свой пример кода, пожалуйста, помогите мне.Отобразить выбранное значение listview в текстовом виде

enter image description here

MainActivity.java 
public class MainActivity extends Activity { 
TextView txt_disp; 
ListView lv; 
String fruits[]={"Apple","Orange","Banana","Grapes","kiwi"}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txt_disp=(TextView)findViewById(R.id.textView1); 
    lv=(ListView)findViewById(R.id.listView1); 
    ArrayList<SamplePOJO> searchResults = GetSearchResults(); 
     CustomAdapter ea=new CustomAdapter(this, searchResults); 
      lv.setAdapter(ea); 
    // here i need to set the text(txt_display) 
} } 

CustomAdapter.java 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.row1, null); 
     holder = new ViewHolder(); 
     holder.fruit=(TextView) convertView.findViewById(R.id.txt_fruit); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.fruit.setText(ContactArrayList.get(position).getFruit()); 
    holder.fruit.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String dis=holder.fruit.getText().toString(); 
      System.out.println("Selected Text:"+dis); 
       //Selected text value set into textview in MainActivity 
    } 
    }); 
    return convertView; 
    } 
+0

whats ur question? – FaddishWorm

+0

Привет, FaddishWorm, я показал, что представление списка состоит из таких элементов, как Banana, Grapes и т. Д., Если я нажимаю на любой элемент, тот же должен отображаться в моем текстовом представлении, как показано выше. См. Перспективу, оба они в той же деятельности, любезно сделайте одолжение Спасибо заранее – Bairavi

+0

попробуйте [это] (http://stackoverflow.com/questions/19044119/display-the-selected-value-of-listview-in- the-textview/19044358 # 19044358) код скопируйте и вставьте в свой метод oncreate –

ответ

4

в вашем CustomAdapter, определить поле TextView и сеттер для него, то в OnCreate установить TextField в текстовое поле вы вытащили с помощью findviewbyid

MainActivity.java 
public class MainActivity extends Activity { 
TextView txt_disp; 
ListView lv; 
String fruits[]={"Apple","Orange","Banana","Grapes","kiwi"}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txt_disp=(TextView)findViewById(R.id.textView1); 
    lv=(ListView)findViewById(R.id.listView1); 
    ArrayList<SamplePOJO> searchResults = GetSearchResults(); 
     CustomAdapter ea=new CustomAdapter(this, searchResults); 
      lv.setAdapter(ea); 
    // here i need to set the text(txt_display) 
ea.setTextField(txt_disp); 


} } 

CustomAdapter.java 

TextView textView; 

public void setTextField(TextView tv){textView = tv;} 
enter code here 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.row1, null); 
     holder = new ViewHolder(); 
     holder.fruit=(TextView) convertView.findViewById(R.id.txt_fruit); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.fruit.setText(ContactArrayList.get(position).getFruit()); 
    holder.fruit.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String dis=holder.fruit.getText().toString(); 
      System.out.println("Selected Text:"+dis); 
       //Selected text value set into textview in MainActivity 
      textView.setText("Selected Text:"+dis); 
    } 
    }); 
    return convertView; 
    } 
+0

Спасибо, что он работает нормально. – Bairavi

0

Try:

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    String dis=holder.fruit.getText().toString(); 
    System.out.println("Selected Text:"+dis); 

    MainActivity.this.txt_disp.setText(dis); 
} 
}); 

EDIT:

Я не заметил, что те отдельные классы. Попробуйте установить ListViev list listener в Activity. Вы получите позицию выбранного элемента и массива элементов.

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     txt_disp.setText(fruits[position]); 
    } 
}); 
+1

это не сработает, если CustomAdapter не является подклассом MainActivity, что здесь не так. – Turkish

1

Я думаю, что вы должны слушать к пункт нажмите событие в списке Вы можете сделать это, добавив этот сегмент кода

lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
       long arg3) { 
      // set the value to the text view here 
     } 
    }); 
0

Попробуйте

lv.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       txt_disp.setText(fruits[arg2]); 
      } 
     }); 
Смежные вопросы