2009-06-18 13 views
8

Hai qualcuno per favore dimmi c'è qualche possibilità di creare un DataGrid in Android, se sì significa per favore aiutami con alcuni frammenti di codice, o dare alcuni URL web correlati.Come creare un display DataGrid in Android?

+0

Potresti per favore approfondire cosa intendi per DataGrid? – emmby

+1

questa è una domanda di gimme-teh-codez, prova a scrivere il codice prima dopo che hai pagato per questo, .. e poi se hai problemi, chiedi loro di farlo qui. – Reno

+0

Ecco un componente Android DataGrid: http://www.androidjetpack.com/Home/AndroidDataGrid – user2453876

risposta

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

Non ho provato questo codice, ma penso che si possa fare a meno di widget0 per avvolgere il textview. Inoltre, il titolo è hardcoded a 150px? Cosa succede se è un titolo lungo per una riga, non assomiglierà più a un datagrid, no? –

Problemi correlati