我有一个自定义列表视图,每行填充图片和文本视图,并显示正确:[ 1
但我的问题是我想在setOnItemClickListener中的Toast中显示文本。这是我的代码:
public class Showing {
public int icon;
public String title;
public Showing(){
super();
}
public Showing(int icon, String title) {
super();
this.icon = icon;
this.title = title;
}}
我的适配器是:
public class ShowingAdapter extends ArrayAdapter<Showing> {
Context context;
int layoutResourceId;
Showing data[] = null;
public ShowingAdapter(Context context, int layoutResourceId, Showing[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ShowingHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ShowingHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
row.setTag(holder);
}
else
{
holder = (ShowingHolder)row.getTag();
}
Showing showing = data[position];
holder.txtTitle.setText(showing.title);
holder.imgIcon.setImageResource(showing.icon);
return row;
}
static class ShowingHolder
{
ImageView imgIcon;
TextView txtTitle;
}}
以下是Header的布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/txtHeader"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:textStyle="bold"
android:textSize="22dp"
android:textColor="#FFFFFF"
android:padding="10dp"
android:text="Action Photos"
android:background="#336699" />
</LinearLayout>
每一行
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<ImageView android:id="@+id/imgIcon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="15dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_gravity="left" />
<TextView android:id="@+id/txtTitle"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:textStyle="bold"
android:textSize="22dp"
android:textColor="#000000"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp" />
</LinearLayout>
所以这是我的主要代码:
public class MainActivity extends Activity {
private ListView listView1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Showing action_data[] = new Showing[]
{
new Showing(R.drawable.cut, "Cut"),
new Showing(R.drawable.delete, "Delete"),
new Showing(R.drawable.favorites, "Favorites"),
new Showing(R.drawable.redo, "Redo"),
new Showing(R.drawable.up, "Up")
};
ShowingAdapter adapter = new ShowingAdapter(this,R.layout.listview_item_row, action_data);
listView1 = (ListView) findViewById(R.id.listView1);
View header = (View) getLayoutInflater().inflate(R.layout.listview_header_row, null);
listView1.addHeaderView(header);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
***// I want to make a toast here...
// but the 'VIEW' is LinearLayout and
// I want to retrive the 'TEXT VIEW.getText'***
}
});
}}
答案 0 :(得分:0)
您无需对布局采取行动。您只需检索与行关联的对象即可。所以在R.style.your_new_style
内你可以这样得到它:
onItemClick()
现在,显示包含您需要的所有信息。所以你可以得到文字:
Showing showing = (Showing)adapter.getitem(position)
或者如果你将标题设为私有(就像它应该的那样),你会使用一个getter:
showing.title