2014-09-04 110 views
0

我想在列表视图中的每个项目的右侧插入一个小图像 基本上我的应用程序应该这样做,只要用户点击列表视图中的项目,图像就变得可见,否则它必须保持不可见。如何将图像插入到列表视图中?

下面

是我与它的XML

活动

public class EpisodiActivity extends Activity { 

public class ViewModel { 
    private String url; 
    private String name; 

    public ViewModel(String url, String name) { 
     this.url = url; 
     this.name = name; 
    } 

    public String getUrl() { 
     return this.url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String toString() { 
     return this.name; 
    } 
} 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //creazione fullscreen activity 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.episodi_activity); 

    String[] episodi = getIntent().getStringArrayExtra("Product"); 
    String[] urls = getIntent().getStringArrayExtra("urls"); 

    ListView mylist = (ListView) findViewById(R.id.listView1); 


    // And in this loop we create the ViewModel instances from 
    // the name and url and add them all to a List 
    List<ViewModel> models = new ArrayList<ViewModel>(); 
    for (int i = 0; i < episodi.length; i++) { 
     String name = episodi[i]; 
     String url = "No value"; 
     if (i < urls.length) { 
      url = urls[i]; 
     } 
     ViewModel model = new ViewModel(url, name); 
     models.add(model); 
    } 


    // Here we create the ArrayAdapter and assign it to the ListView 
    // We pass the List of ViewModel instances into the ArrayAdapter 
    final ArrayAdapter<ViewModel> adapter = new ArrayAdapter<ViewModel>(this, android.R.layout.simple_list_item_1, models); 

    mylist.setAdapter(adapter); 


    mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { 

      // Here we get the ViewModel at the given position 
      ViewModel model = (ViewModel) arg0.getItemAtPosition(position); 

      // And the url from the ViewModel 
      String url = model.getUrl(); 

      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
     } 
    }); 
} 

XML活动

RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/pubblicita" 
    android:cacheColorHint="#ffd700" 
    android:background="@drawable/sfondobottone" /> 

+0

看到我的回答,我希望它可以帮助你 – Jamil 2014-09-04 19:50:37

回答

-1

您可以在这里设置在这样的XML

android:visibility="visible" 

android:visibility="invisible" 

android:visibility="gone" 

Java程序:

ImageView imgView = (ImageView)findViewById(R.id.custom); 

设置您的ImageView这样

imgView .setVisibility(View.VISIBLE); 


imgView .setVisibility(View.INVISIBLE); 


imgView .setVisibility(View.GONE); 

d INVISIBLE和GONE之间的推断。

INVISIBLE - 小部件将不可见,但小部件的空间将显示。

GONE - 空间和小部件都不可见。

现在,你可以连接你的setOnItemClickListener()

listview.setOnItemClickListener(new OnItemClickListener() 
{ 
@Override 
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) 
{ 
    imgView .setVisibility(View.VISIBLE); 
} 
}); 
+0

我不明白为什么有票了,答案清楚地解释了如何做一个ImageView的'Invisible'和列表视图项点击使该imageview'可见'。 – 2014-09-05 06:05:09

1

我想你想这种输出的列表视图中的ListView

文本与图像

enter image description here

您可以使用自定义列表视图。使延伸BaseAdapter类

这里一类是,我使用

你BaseAdapter

import java.util.ArrayList; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

    public class FrontListBaseAdapter extends BaseAdapter { 
    private static ArrayList<FrontDetails> itemDetailsrrayList; 

    private LayoutInflater l_Inflater; 

    public FrontListBaseAdapter(Context context, ArrayList<FrontDetails> results) { 
     itemDetailsrrayList = results; 
     l_Inflater = LayoutInflater.from(context); 
    } 

    public int getCount() { 
     return itemDetailsrrayList.size(); 
    } 

    public Object getItem(int position) { 
     return itemDetailsrrayList.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

     // get the views in frontview xml file where you have 
     // define multiple views that will appear in listview each row 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
     convertView = l_Inflater.inflate(R.layout.frontview, null); 
     holder = new ViewHolder(); 
     holder.Image = (ImageView) convertView.findViewById(R.id.adminpic1); 
     holder.MsgType = (TextView) convertView.findViewById(R.id.msgtype1); 

     convertView.setTag(holder); 
     } else { 
     holder = (ViewHolder) convertView.getTag(); 
     } 


     holder.Image.setImageResource(R.drawable.mainlogo); // you can set your setter here 
     holder.MsgType.setText(itemDetailsrrayList.get(position).getMsgType()); 

     return convertView; 
    } 

    // holder view for views 
    static class ViewHolder { 
     ImageView Image; 
     TextView MsgType; 
    } 
    } 

您FrontDetails类,你会做的getter和setter的〔实施例,这堂课将用来在最后ArrayList resultse = new ArrayList();

import android.graphics.Bitmap; 

public class FrontDetails { 

    public int getImage() { 
    return image; 
    } 
    public void setImage(int imageN) { 
    this.image = imageN; 
    } 


    public String getMsgType() { 
    return MsgType; 
    } 
    public void setMsgType(String text) { 
    this.MsgType = text; 
    } 



    private int image; 
    private String MsgType; 

    } 

你的视野。XML,你把你的,这将是各行中的多个视图或布局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:orientation="vertical" 
    android:layout_margin="10dp" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="80dp" > 

     <ImageView 
      android:id="@+id/adminpic1" 
      android:layout_width="60dp" 
      android:layout_height="60dp" 
      android:src="@drawable/ic_launcher" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 



      <TextView 
       android:id="@+id/msgtype1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="5dp" 
       android:layout_marginTop="4dp" 
       android:textSize="1sp" 
       android:text="MsgType" /> 


     </LinearLayout> 

    </LinearLayout> 

</LinearLayout> 

和你的列表视图中的XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/sync" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Sync" /> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" > 
    </ListView> 

</LinearLayout> 

现在在主要活动

final ArrayList<FrontDetails> resultse = new ArrayList<FrontDetails>(); 
FrontListBaseAdapter asdf = new FrontListBaseAdapter(context, resultse); 
       lv1.setAdapter(new FrontListBaseAdapter(Front.this, resultse)); 


lv1.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, 
         int position, long arg3) { 

        Object o = lv1.getItemAtPosition(position); 
        FrontDetails obj_itemDetails = (FrontDetails)o; 
        Toast.makeText(context, "You have chosen " + ' ' + obj_itemDetails.getMsgType(), Toast.LENGTH_LONG).show(); 

    } 
     }); 

编辑: 从这里我学会了自定义列表查看它的一个简单的例子与图像

http://www.javasrilankansupport.com/2012/05/android-listview-example-with-image-and.html

http://www.javacodegeeks.com/2012/10/android-listview-example-with-image-and.html

0

我可以给一些建议,但遗憾的是未能通过实例帮助你..

,首先创建一个定制适配器(延伸BaseAdapter),其次是一个自定义布局。 这里的自定义布局在右侧包含textview和一个图像视图(默认为不可见)。

只是自定义列表视图与您的适配器和通过get视图()把文本中的TextView ..

最后在listItemClickListener使图像通过它的位置可见。与BaseAdapter

适配器

public class CustomBaseAdapter extends BaseAdapter { 
Context context; 
List<RowItem> rowItems; 

public CustomBaseAdapter(Context context, List<RowItem> items) { 
    this.context = context; 
    this.rowItems = items; 
} 

/*private view holder class*/ 
private class ViewHolder { 
    ImageView imageView; 
    TextView txtTitle; 
    TextView txtDesc; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 

    LayoutInflater mInflater = (LayoutInflater) 
     context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.list_item, null); 
     holder = new ViewHolder(); 
     holder.txtDesc = (TextView) convertView.findViewById(R.id.desc); 
     holder.txtTitle = (TextView) convertView.findViewById(R.id.title); 
     holder.imageView = (ImageView) convertView.findViewById(R.id.icon); 
     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    RowItem rowItem = (RowItem) getItem(position); 

    holder.txtDesc.setText(rowItem.getDesc()); 
    holder.txtTitle.setText(rowItem.getTitle()); 
    holder.imageView.setImageResource(rowItem.getImageId()); 

    return convertView; 
} 

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

@Override 
public Object getItem(int position) { 
    return rowItems.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return rowItems.indexOf(getItem(position)); 
} 

}

你list_item.xml

1

使用自定义列表视图

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ImageView 
    android:id="@+id/icon" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:contentDescription="@string/image" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" /> 

<TextView 
    android:id="@+id/title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/icon" 
    android:paddingBottom="10dp" 
    android:textColor="#CC0033" 
    android:textSize="16dp" /> 

<TextView 
    android:id="@+id/desc" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/title" 
    android:layout_toRightOf="@+id/icon" 
    android:paddingLeft="10dp" 
    android:textColor="#3399FF" 
    android:textSize="14dp" /> 

</RelativeLayout> 

你的单列项目类

public class RowItem { 
private int imageId; 
private String title; 
private String desc; 

public RowItem(int imageId, String title, String desc) { 
    this.imageId = imageId; 
    this.title = title; 
    this.desc = desc; 
} 
public int getImageId() { 
    return imageId; 
} 
public void setImageId(int imageId) { 
    this.imageId = imageId; 
} 
public String getDesc() { 
    return desc; 
} 
public void setDesc(String desc) { 
    this.desc = desc; 
} 
public String getTitle() { 
    return title; 
} 
public void setTitle(String title) { 
    this.title = title; 
} 
@Override 
public String toString() { 
    return title + "\n" + desc; 
} 
} 

列表视图实现

listView = (ListView) findViewById(R.id.list); 
    CustomBaseAdapter adapter = new CustomBaseAdapter(this, rowItems); 
    listView.setAdapter(adapter);