2017-07-12 55 views
0

首先抱歉沟通不佳,我已经使用自定义阵列适配器和图像列表和名称显示gridview控件在我的app.The图像和名称来自sql server数据库现在显示所有图像绑定和显示到gridview,我想显示幻灯片类型的图像,即第一列显示3个图像后,点击图像滑动到下一个3图像显示..任何人请帮助我。Android自定义ListView与图像和文本在水平

我的代码是:

enquiryfrm.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Select Name"/> 
    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <ScrollView 
     android:id="@+id/questionListSV" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:fillViewport="true"> 


    <GridView 
     android:id="@+id/gridviewimg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:numColumns="3" 
     android:horizontalSpacing="10dp" 
     android:scrollbars="horizontal" 
     android:scrollbarAlwaysDrawHorizontalTrack="true" 
     android:scrollbarAlwaysDrawVerticalTrack="true" 
     android:stretchMode="none" 
     android:columnWidth="100dp" 
     android:paddingBottom="60dp"/> 
    </ScrollView> 
    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    </Spinner> 

</LinearLayout> 

2.enquiryaimagetemplate.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="wrap_content" 
    android:padding="1dp" 
    android:orientation="vertical"> 
    <ImageView 
     android:id="@+id/imageview2" 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:scaleType="fitXY" 
     android:layout_marginRight="10dp" 
     android:src="@drawable/not_available" /> 
    <TextView 
     android:id="@+id/txtitem_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dp" 
     android:textSize="15sp" > 
    </TextView> 
    <TextView 
     android:id="@+id/txtregidno" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dp" 
     android:textSize="15sp" > 
    </TextView> 
</LinearLayout> 

3.enquiryitems.java

public class enquiryItems { 
     String itemname; 
     int Reg_id; 
     Bitmap itemimg; 
     public enquiryItems(String itemname,Bitmap itemimg,int Reg_id){ 
      this.itemname=itemname; 
      this.itemimg=itemimg; 
      this.Reg_id=Reg_id; 
     } 

     public String getItemname(){ 
      return itemname; 
     } 
     public Bitmap getItemimg(){return itemimg;} 
     public int getReg_id(){return Reg_id;} 
    } 

4.enquiryarrayadapter

public class EnquiryArrayadapter extends ArrayAdapter<enquiryItems> { 

    ArrayList<enquiryItems> itemlist = new ArrayList<>(); 
    private Context context; 
    ConnectionClass connectionClass; 
    public EnquiryArrayadapter(ArrayList<enquiryItems> objects,Context context)  { 
     super(context,R.layout.enquiryaimagetemplate,objects); 
     this.itemlist=objects; 
     this.context=context; 
     //visitorlist=objects; 
    } 
    @Override 
    public int getCount() { 

     return super.getCount(); 
    } 
    @Override 
    public View getView(final int position, View convertview, ViewGroup parent){ 
     if (convertview == null) { // This a new view we inflate the new layout 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertview = inflater.inflate(R.layout.enquiryaimagetemplate, parent, false); 
     } 

     connectionClass = new ConnectionClass(); 

     final TextView txtitem_name=(TextView)convertview.findViewById(R.id.txtitem_name); 
     final TextView txtregidno = (TextView) convertview.findViewById(R.id.txtregidno); 
     final ImageView imageview2 = (ImageView) convertview.findViewById(R.id.imageview2); 
     final enquiryItems objitem=itemlist.get(position); 
     imageview2.setImageBitmap(objitem.getItemimg()); 
     txtitem_name.setText(objitem.getItemname()); 
     txtregidno.setText(String.valueOf(objitem.getReg_id())); 
     // txtregidno.setVisibility(View.GONE); 

     imageview2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //ImageView imageview2 = (ImageView) v; 
       String idval = txtregidno.getText().toString(); 
       /* int id=Integer.parseInt(String.valueOf(idval)); 
       zoomImageFromThumb(imageview2, id);*/ 
      } 
     }); 
     return convertview; 

    } 

5.enquiry.java

public class Enquiry extends Fragment { 
    ProgressDialog pbd; 
    GridView gridviewimg; 
    ConnectionClass connectionClass; 
    int RegIdNo; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.enquiryfrm, container, false); 
     connectionClass=new ConnectionClass(); 
     gridviewimg=(GridView)rootView.findViewById(R.id.gridviewimg); 
     Fetch fe=new Fetch(); 
     fe.execute(""); 
     return rootView; 
    } 

    public class Fetch extends AsyncTask<String, String, String> { 

     String z = ""; 
     String ownid; 
     ArrayList<enquiryItems> visitorList=new ArrayList<>(); 

     @Override 
     protected void onPreExecute() { 
      pbd=new ProgressDialog(getActivity()); 
      pbd.setMessage("Please Wait..."); 
      pbd.setCancelable(false); 
      pbd.show(); 
     } 
     @Override 
     protected void onPostExecute(String r) { 

      // pbbar.setVisibility(View.GONE); 
      if (pbd.isShowing()) 
       pbd.dismiss(); 
      if(r!="empty"){ 
       Toast.makeText(getActivity(), r, Toast.LENGTH_SHORT).show(); 
      } 
      EnquiryArrayadapter myAdapter=new EnquiryArrayadapter(visitorList,getActivity()); 
      myAdapter.notifyDataSetChanged(); 
      gridviewimg.setAdapter(myAdapter); 
      // Toast.makeText(getActivity(), r, Toast.LENGTH_SHORT).show(); 

     } 
     @Override 
     protected String doInBackground(String... params) { 
      try { 
       Connection con = connectionClass.CONN(); 
       if (con == null) { 
        z = "Error in connection with SQL server"; 
       } else {// 
        String query=""; 
         query = "select * from FB_Feedback"; 


        PreparedStatement ps2 = con.prepareStatement(query); 
        ResultSet rs2 = ps2.executeQuery(); 
        ArrayList data1 = new ArrayList(); 
        while (rs2.next()) { 

         //Reg_Id=rs.getInt("Id"); 
         RegIdNo = rs2.getInt("id"); 
         String r = rs2.getString("Photo"); 
         //Convertong Images string to bitmap 
         byte[] decodeString = Base64.decode(r, Base64.DEFAULT); 
         Bitmap decodebitmap = BitmapFactory.decodeByteArray(decodeString, 0, decodeString.length); 
         visitorList.add(new enquiryItems("Item Name : "+rs2.getString("Feedback"),decodebitmap,RegIdNo)); 
         // } 
         // z="Success"; 
        } 
        if (RegIdNo==0){ 
         z="No Visitor data"; 
        }else { 
         z="empty"; 
        } 

       } 

      } catch (Exception ex) { 
       z = ex.toString(); 

      } 
      return z; 

     } 
    } 

像下面的格式需要enter image description here

回答

0

你的问题是不理解。据我了解,尝试使用horizontal listview.

+0

请参阅下面的图片链接.. – Anbu

+0

嘿,你可以使用recyclerview这个 – Dilip

+0

我想GridView控件列表显示,以自定义列表滑动另3幅图像后才即3图像显示到前的屏幕 – Anbu