2016-08-24 6 views
0

Ich erstellte eine Student-Klasse und eine ListView in MainActivity. Hier ist MainActivity:So extrahieren Sie den Text aus einer Zelle in einer ListView

Context context; 
ListView listView; 
ArrayList<Student> lista; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    lista= new ArrayList<>(); 
    context=this; 
    Student cursant = new Student("Smith","Ben",14); 
    Student cursant2 = new Student("White","Jack",21); 
    Student cursant3 = new Student("Stewart","Matt",33); 
    lista.add(cursant); 
    lista.add(cursant2); 
    lista.add(cursant3); 
    listView=(ListView) findViewById(R.id.listview); 
    listView.setAdapter(new CustomAdapter(this,R.layout.activity_main,lista)); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent i = new Intent(MainActivity.this,Main2Activity.class); 
      String selected =((TextView)view.findViewById(R.id.textViewNume)).getText().toString(); 
      i.putExtra("name",selected); 
      startActivity(i); 
     } 
    }); 
} 

Hier ist meine CustomAdapter:

public class CustomAdapter extends ArrayAdapter<Student> { 
ArrayList<Student> current_objects; 
Context context; 
private static LayoutInflater inflater=null; 
public CustomAdapter(Context context, int resource, ArrayList<Student> objects) { 
    super(context, resource, objects); 
    this.current_objects=objects; 
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override 
public int getCount() { 
    return current_objects.size(); 
} 

@Override 
public Student getItem(int position) { 
    return current_objects.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

public class Holder{ 
    TextView tv1,tv2,tv3; 
    Button button; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    Holder holder = new Holder(); 
    final View rowView; 
    rowView=inflater.inflate(R.layout.item,null); 
    holder.tv1=(TextView) rowView.findViewById(R.id.textViewNume); 
    holder.tv2=(TextView) rowView.findViewById(R.id.textViewPrenume); 
    holder.tv3=(TextView) rowView.findViewById(R.id.textViewVarsta); 

    final Student current_cursant = current_objects.get(position); 
    holder.tv1.setText(current_cursant.getNume()); 
    holder.tv2.setText(current_cursant.getPrenume()); 
    holder.tv3.setText(String.valueOf(current_cursant.getVarsta())); 

    holder.button=(Button) rowView.findViewById(R.id.button); 
    holder.button.setTag(position); 

    holder.button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Integer index=(Integer)v.getTag(); 
      current_objects.remove(index.intValue()); 
      notifyDataSetChanged(); 
     } 
    }); 

    return rowView; 
} 

}

Ich habe Main2Activity, und ich möchte den Namen angezeigt werden (in Main2Activity), wenn eine Zelle des Listview ist gedrückt. Ich bin mir nicht sicher über den ClickListener.

+0

zeigen Code der auch das Layout. – Saini

Antwort

0

Zuerst versuchen, dieses:

listView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
        long id) { 

       String item = ((TextView)view).getText().toString(); 

       Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 

      } 
     }); 

Wenn dies das richtige Ergebnis gibt dann fügen Sie einfach die Absicht Code die Toast-Anweisung zu ersetzen.

0

Ihr onItemClick Teil scheint richtig, also denke ich, das Problem muss sein, wie der Text auf Main2Activity angezeigt wird.

Sie haben die Absicht bereits bestanden und die Main2Activity gestartet.

Jetzt müssen Sie nur die Absicht erhalten und es zeigen.

Angenommen, Sie eine Textview in Main2Activiy mit id textView1 haben, dann werden Sie die Absicht erhalten, wie folgt:

Bundle extras = getIntent().getExtras(); 
     if (extras == null) { 
      return; 
     } 

     String name= extras.getString("name"); 

     TextView textView = (TextView) 
       findViewById(R.id.textView1);  
     textView.setText(name); 
0

Dies wird für Sie arbeiten:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Student student = (Student)parent.getItemAtPosition(position); 
     // do whatever you want with student object 
    } 
}); 
Verwandte Themen