2014-08-29 60 views
0

我有一個是填充片段的內部的列表視圖一個ParseQueryAdapter:如何從ParseQueryAdapter設置TextField?

QueryAdapter:

public class CustomAdapter extends ParseQueryAdapter implements AdapterView.OnItemClickListener { 

public CustomAdapter(Context context) { 

    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() { 
     public ParseQuery create() { 
      ParseQuery query = new ParseQuery("Invoice"); 
      query.whereEqualTo("CustomerID", ParseUser.getCurrentUser()); 
      return query; 
     } 
    }); 
} 

@Override 
public View getItemView(ParseObject object, View cellview, ViewGroup parent) { 
    if (cellview == null) { 

     cellview = View.inflate(getContext(), R.layout.cell_layout, null); 

    } 

    TextView cellDate = (TextView) cellview.findViewById(R.id.dateTextView); 
    TextView invoice = (TextView) cellview.findViewById(R.id.invoiceNoTextView); 

    cellDate.setText(object.getString("Date")); 
    invoice.setText(object.getString("InvoiceNumber")); 

    return cellview; 
} 

@Override 
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

} 
} 

片段包含列表視圖:

public class InvoiceHistory extends Fragment { 

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

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

final FrameLayout layout = (FrameLayout) inflater.inflate(R.layout.fragment_invoice_history, container, false); 

    ListView invoicesListView = (ListView) layout.findViewById(R.id.invoiceList); 

    ParseQueryAdapter adapter = new CustomAdapter(getActivity()); 
    invoicesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

      Fragment detailView = new InvoicesFragment(); 
      FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.placeholder, detailView); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 
     } 
    }); 

    invoicesListView.setAdapter(adapter); 
    adapter.loadObjects(); 

    return layout; 
} 

} 

這填充的ListView與來自適當的字段查詢,但是當我點擊其中一個單元格時發生了片段事務,但我無法弄清楚如何使用查詢中的ParseObject Keys在該新片段上設置文本字段。

這是被提交,我想設置文本框的片段:

public class InvoicesFragment extends Fragment { 


public InvoicesFragment() { 
    // Required empty public constructor 
} 

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

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.fragment_invoices, container, false); 


    return layout; 
} 

Android是超級新的給我,所以也許這是接近它錯誤的方式。但是我想在這裏做的就是將這些細節片段與填充的TextView一起顯示出來。我不確定我在做什麼。

回答

1

您可以通過在您的DetailsFragment中設置一個構造函數來實現此目的,您可以在要顯示的textview信息中傳遞該構造函數。在下面的例子中,數據和發票號碼被傳遞給構造函數。當片段成立,這個片段設置與解析對象的數據:

invoicesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
    ParseObject object = adapter.getItem(i); 
    Fragment detailView = DetailsFragment.newInstance(object.getString("Date"), 
                object.getString("InvoiceNumber")); 
    // ... 
    } 
}); 

這裏是展示新構造函數的DetailsFragment的部分,以及如何你可以在設置您的視圖中使用它們:

// InvoicesFragment.java 
public static class InvoicesFragment extends Fragment { 

    // ... 

    public static InvoicesFragment newInstance(String invoiceDate, String invoiceNumber) { 
    InvoicesFragment f = new InvoicesFragment(); 

    Bundle args = new Bundle(); 
    args.putString("invoiceDate", InvoiceDate); 
    args.putString("invoiceNumber", InvoiceNumber); 
    f.setArguments(args); 

    return f; 
    } 

    public String getInvoiceDate() { 
    return getArguments().getString("invoiceDate", ""); 
    } 

    public String getInvoiceNumber() { 
    return getArguments().getString("invoiceNumber", ""); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.fragment_invoices, container, false); 

    // Assign some TextView, ex: dateTextView 
    dateTextView.setText(getInvoiceDate()); 
    return layout; 
    } 

} 
相關問題