2009-06-18 22 views
8

Herhangi biri varsa, lütfen bana bir kod snippet'leri ile yardımcı olun veya bazı ilgili web URL'leri verin lütfen, eğer bir DataGrid'i android oluşturmak için herhangi bir imkan olduğunu söyleyin.Android'de DataGrid ekranı nasıl oluşturulur?

+0

DataGrid tarafından ne demek istediğinizi ayrıntılı olarak açıklar mısınız? – emmby

+1

Bu bir "gimme-teh-codez" sorusudur, ilk önce sizin için ödeme yapıldıktan sonra kod yazmayı deneyin. Sorunlarınız varsa bunları burada sorun. – Reno

+0

İşte bir Android DataGrid bileşenidir: http://www.androidjetpack.com/Home/AndroidDataGrid – user2453876

cevap

9

Book.java

package com.dgrid; 

public class Book { 
    String title; 
    String author; 

    public Book(String title, String author) { 
     this.title = title; 
     this.author = author; 
    } 
    public String getTitle() { 
     return title; 
    } 
    public void setTitle(String title) { 
     this.title = title; 
    } 
    public String getAuthor() { 
     return author; 
    } 
    public void setAuthor(String author) { 
     this.author = author; 
    } 

} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    > 
<ListView 
    android:id="@+id/bookListView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:divider="#ffffff" 
    /> 
</AbsoluteLayout> 

row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:id="@+id/widget0" 
android:orientation="horizontal" 
android:layout_toRightOf="@android:id/icon" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffffff" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<com.dgrid.ListItemView 
android:id="@+id/title" 
android:layout_height="wrap_content" 
android:layout_width="150px" 
android:text="Title" 
android:textSize="10sp" 
android:textStyle="bold" 
android:textColor="#ff000000" 
/> 

ListItemView.java

package com.dgrid; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.util.AttributeSet; 
import android.widget.TextView; 

public class ListItemView extends TextView { 
    private boolean isHeader = false; 
    private Paint linePaint; 

    public ListItemView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    public ListItemView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public ListItemView(Context context) { 
     super(context); 
     init(); 
    } 

    public void init(){ 
     linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     linePaint.setColor(Color.parseColor("#000000")); 
    } 
    public boolean isHeader() { 
     return isHeader; 
    } 

    public void setHeader(boolean isHeader) { 
     this.isHeader = isHeader; 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     if(isHeader){ 
      canvas.drawColor(Color.parseColor("#AAFFFF99")); 
     } 
     canvas.drawLine(0, 0, getMeasuredWidth(), 0,linePaint); 
     canvas.drawLine(0, getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(),linePaint); 
     canvas.drawLine(0,0, 0, getMeasuredHeight(),linePaint); 
    } 
} 

DatagridActivity.java

package com.dgrid; 



import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class DatagridActivity extends Activity { 
    Context mContext; 
    Book[] books = {new Book("Title","Author"),new Book("Clean Code","Uncle Bob"),new Book("Face 2.0","Allen Cooper")}; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = this; 
     setContentView(R.layout.main); 
     ListView bookListView =(ListView)findViewById(R.id.bookListView); 
     LitemItemAdapter mcqListAdapter = new LitemItemAdapter(this,R.layout.row,books); 
     bookListView.setAdapter(mcqListAdapter); 
    } 
    class LitemItemAdapter extends ArrayAdapter<Book>{ 

     public LitemItemAdapter(Context context, int textViewResourceId, 
       Book[] objects) { 
      super(context, textViewResourceId, objects); 
     } 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 

       LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.row, null); 
      } 
      Book item = books[position]; 
      if (item != null) { 
        ListItemView titleView = (ListItemView) v.findViewById(R.id.title); 
        ListItemView authorView = (ListItemView) v.findViewById(R.id.author); 
        if(position == 0){ 
         titleView.setHeader(true); 
         authorView.setHeader(true); 
        } 
        if(titleView != null){ 
         titleView.setText(item.getTitle()); 
        } 
        if(authorView != null){ 
         authorView.setText(item.getAuthor()); 
        } 
      } 
      return v; 
     }  

    } 
} 
+0

Bu kodu denemedim ama bence widget'0 olmadan metin görünümünü sarmak için yapabiliyordunuz. Ayrıca 150px'e kodlanmış başlık mı? Bir satır için uzun bir başlık olması durumunda ne olur, artık bir datagrid gibi görünmeyecek, değil mi? –