2014-08-29 6 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 키를 사용하여 새 조각에 텍스트 필드를 설정하는 방법을 알 수 없습니다. 그래서 아마이 그것을 접근하는 잘못된 방법입니다

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; 
} 

안드로이드 나에게 매우 새로운 :

내가있는 텍스트 필드를 설정할 것을 발표됩니다 조각입니다. 그러나 내가 여기에서하고 싶은 것은 세부 프래그먼트가 채워진 TextViews로 나타나도록하는 것입니다. 나는 무엇을하고 있는지 정말로 모르겠다.

답변

1

표시하려는 텍스트 뷰 정보를 전달할 수있는 DetailsFragment의 생성자를 설정하여이 문제에 접근 할 수 있습니다. 아래 예제에서는 데이터 및 송장 번호가 생성자로 전달됩니다. 조각이 설정 될 때,이 조각은 구문 분석 개체의 데이터와 설정 : 당신이 당신의보기를 설정에서 사용할 수있는 방법은 다음과

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; 
    } 

} 
관련 문제