Java Android自定义列表视图,水平显示图像和文本
首先,很抱歉沟通不畅,我正在使用自定义阵列适配器,我的应用程序中正在显示gridview控件中的图像和名称列表。这些图像和名称来自sql server数据库,现在显示所有图像绑定并显示到gridview,我希望图像显示幻灯片类型,即单击图像幻灯片后第一列显示3个图像,然后显示下3个图像。。谁来帮帮我 我的代码是: inquiryfrm.xmlJava Android自定义列表视图,水平显示图像和文本,java,android,android-gallery,Java,Android,Android Gallery,首先,很抱歉沟通不畅,我正在使用自定义阵列适配器,我的应用程序中正在显示gridview控件中的图像和名称列表。这些图像和名称来自sql server数据库,现在显示所有图像绑定并显示到gridview,我希望图像显示幻灯片类型,即单击图像幻灯片后第一列显示3个图像,然后显示下3个图像。。谁来帮帮我 我的代码是: inquiryfrm.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="
<?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>
4.1.2.2适配器
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;
}
公共类查询ArrayAdapter扩展ArrayAdapter{
ArrayList itemlist=新建ArrayList();
私人语境;
连接类连接类;
公共查询数组适配器(ArrayList对象、上下文){
超级(上下文、R.layout.ImageTemplate、对象);
this.itemlist=对象;
this.context=context;
//visitorlist=对象;
}
@凌驾
public int getCount(){
返回super.getCount();
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
如果(convertview==null){//这是一个新的视图,我们将膨胀新的布局
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertview=充气机。充气(R.layout.ImageTemplate,父项,false);
}
connectionClass=新的connectionClass();
final TextView txtitem_name=(TextView)convertview.findViewById(R.id.txtitem_name);
final TextView txtregidno=(TextView)convertview.findViewById(R.id.txtregidno);
最终ImageView imageview2=(ImageView)convertview.findViewById(R.id.imageview2);
最终查询项objitem=itemlist.get(位置);
setImageBitmap(objitem.getItemimg());
txtitem_name.setText(objitem.getItemname());
txtregidno.setText(String.valueOf(objitem.getReg_id());
//txtregidno.setVisibility(View.GONE);
imageview2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//ImageView imageview2=(ImageView)v;
字符串idval=txtregidno.getText().toString();
/*int id=Integer.parseInt(String.valueOf(idval));
zoomImageFromThumb(图像视图2,id)*/
}
});
返回视图;
}
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;
}
}
公开课查询扩展片段{
多溴二苯醚;
GridView-GridView-img;
连接类连接类;
国际区域组织;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(R.layout.inquiryform,container,false);
connectionClass=新的connectionClass();
gridviewimg=(GridView)rootView.findViewById(R.id.gridviewimg);
Fetch fe=新Fetch();
fe.执行(“”);
返回rootView;
}
公共类获取扩展异步任务{
字符串z=“”;
字符串ownid;
ArrayList visitorList=新建ArrayList();
@凌驾
受保护的void onPreExecute(){
pbd=新建进度对话框(getActivity());
设置消息(“请稍候…”);
pbd.setCancelable(假);
pbd.show();
}
@凌驾
受保护的void onPostExecute(字符串r){
//pbbar.setVisibility(View.GONE);
if(pbd.isShowing())
pbd.discouse();
如果(r!=“空”){
Toast.makeText(getActivity(),r,Toast.LENGTH_SHORT).show();
}
InquiryArrayAdapter myAdapter=新的InquiryArrayAdapter(visitorList,getActivity());
myAdapter.notifyDataSetChanged();
gridviewimg.setAdapter(myAdapter);
//Toast.makeText(getActivity(),r,Toast.LENGTH_SHORT).show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
Connection con=connectionClass.CONN();
如果(con==null){
z=“与SQL server连接时出错”;
}否则{//
字符串查询=”;
query=“从FB\U反馈中选择*”;
PreparedStatement ps2=con.prepareStatement(查询);
ResultSet rs2=ps2.executeQuery();
ArrayList data1=新的ArrayList();
while(rs2.next()){
//Reg_Id=rs.getInt(“Id”);
RegIdNo=rs2.getInt(“id”);
字符串r=rs2.getString(“照片”);
//将图像字符串转换为位图
字节[]decodeString=Base64.decode(r,Base64.DEFAULT);
位图decodeB位图=BitmapFactory.decodeByteArray(decodeString,0,decodeString.length);
添加(新的查询项(“项目名称:”+rs2.getString(“反馈”),解码位图,RegIdNo));
// }
//z=“成功”;
}
如果(RegIdNo==0){
z=“无访客数据”;
}否则{
z=“空”;
}
}
}捕获(例外情况除外){
z=例如toString();
}
返回z;
}
}
像下面的格式一样需要你的问题是不可理解的。据我所知,尝试使用嘿,你可以使用recyclerview来实现这一点。我只想将gridview列表显示为自定义列表,即在将另外3个图像显示滑动到屏幕前面后显示3个图像查看此示例
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;
}
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;
}
}