2017-02-09 20 views
1

我已經搜索了很多。但我沒有得到解決方案。來自SwipeStackAdapter適配器的日期選擇器

我的問題是我有一個片段。在片段中,我正在充脹一些卡,即刷卡。對於那些刷卡布局,我使用SwipeStackAdapter來擴充視圖xml。

在我的一個XML視圖即時通訊嘗試實現datepicker。

TaskCardListShow.java片段代碼

import android.content.Context; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.BaseAdapter; 
import android.widget.DatePicker; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.support.v7.app.AppCompatActivity; 

import com.jmedeisis.draglinearlayout.DragLinearLayout; 

import java.util.ArrayList; 
import java.util.List; 

import link.fls.swipestack.SwipeStack; 

public class TaskCardListShow extends Fragment implements SwipeStack.SwipeStackListener, View.OnClickListener { 
    private ArrayList<String> mData; 
    private ArrayList<String> LayOutData; 
    private SwipeStack mSwipeStack; 
    private SwipeStackAdapter mAdapter; 
    public int cardCounter; 
    Context context; 
    AutoCompleteTextView autoTextView; 

    public TaskCardListShow() { 
    } 
    public static TaskCardListShow newInstance() { 

     TaskCardListShow _TaskCardListShow = new TaskCardListShow(); 

     return _TaskCardListShow; 
    } 

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

     mSwipeStack = (SwipeStack) view.findViewById(R.id.swipeStack); 
     mData = new ArrayList<>(); 
     LayOutData = new ArrayList<>(); 
     mAdapter = new SwipeStackAdapter(mData,LayOutData); 
     mSwipeStack.setAdapter(mAdapter); 
     mSwipeStack.setListener(this); 
     context=getActivity().getApplicationContext(); 

     cardCounter=7;// write function for getting card count. 

     fillStackCard(); 
     return view; 
    } 

    private void fillStackCard() { 
     for (int x = 0; x <cardCounter; x++) { 
      mData.add(getString(R.string.dummy_text) + " " + (x + 1)); 
      LayOutData.add(getString(R.string.str_card)+ (x + 1)); 
     } 
    } 


    @Override 
    public void onClick(View v) { 

    } 
    @Override 
    public void onViewSwipedToRight(int position) { 
     String swipedElement = mAdapter.getItem(position); 
    } 

    @Override 
    public void onViewSwipedToLeft(int position) { 
     String swipedElement = mAdapter.getItem(position); 
    } 

    @Override 
    public void onStackEmpty() { 

     removeTaskCardFragment(); 
    } 
    public void removeTaskCardFragment(){ 
     FragmentManager manager = getActivity().getSupportFragmentManager(); 
     FragmentTransaction mFragmentTransaction = manager.beginTransaction(); 
     TaskCardListShow _TaskCardListShowFragment = new TaskCardListShow(); 
     mFragmentTransaction.remove(_TaskCardListShowFragment); 
     mFragmentTransaction.commit(); 
     manager.popBackStack(); 
    } 

    public class SwipeStackAdapter extends BaseAdapter { 

     private List<String> mData; 
     private List<String> LayOutData; 
     DragLinearLayout dragDropAndroidLinearLayout; 

     public SwipeStackAdapter(List<String> data,List<String> Ldata) { 
      this.mData = data; 
      this.LayOutData = Ldata; 
     } 

     @Override 
     public int getCount() { 
      return mData.size(); 
     } 

     @Override 
     public String getItem(int position) { 
      return mData.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      String LName=LayOutData.get(position); 

      try { 
       int id = getActivity().getApplicationContext().getResources(). 
         getIdentifier(LName, "layout", getActivity().getPackageName()); 
       convertView = getActivity().getLayoutInflater().inflate(id, parent, false); 


       if(position==4){ // my date picker layout will come this postion. 

       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return convertView; 
     } 


} 

card_4.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    card_view:cardCornerRadius="@dimen/card_corner_radius" 
    card_view:cardElevation="@dimen/elevation_large" 
    > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:gravity="center" 
      android:id="@+id/TxtQuestion"> 
      <TextView 
       android:id="@+id/textViewCard" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:gravity="top" 
       android:textColor="@color/colorAccent" 
       android:textStyle="bold|italic" 
       android:textSize="20sp" 
       android:padding="30dp" 
       android:layout_gravity="top|center_horizontal|center_vertical" 
       android:text="Date picker template"/> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_below="@+id/TxtQuestion" 
      android:layout_centerInParent="true" 
      android:id="@+id/linearLayout"> 
      <DatePicker 
       android:id="@+id/dpResult" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 
    </RelativeLayout> 
</android.support.v7.widget.CardView> 

能否請您指導我做到這一點。我已經試過很多方法,但它不是在我的適配器工作我我的情況

回答

1

我已經解決我的問題,

final TextView _dpResult=(TextView)convertView.findViewById(R.id.dpResult); 
_dpResult.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View arg0) { 
           DialogFragment newFragment = new SelectDateFragment(); 
           newFragment.show(getFragmentManager(), "DatePicker"); 
          } 
         }); 

SelectDateFragment

public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @RequiresApi(api = Build.VERSION_CODES.N) 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar calendar = Calendar.getInstance(); 
     int yy = calendar.get(Calendar.YEAR); 
     int mm = calendar.get(Calendar.MONTH); 
     int dd = calendar.get(Calendar.DAY_OF_MONTH); 
     return new DatePickerDialog(getActivity(), this, yy, mm, dd); 
    } 

    public void onDateSet(DatePicker view, int yy, int mm, int dd) { 
     populateSetDate(yy, mm+1, dd); 
    } 
    public void populateSetDate(int year, int month, int day) { 
     TextView dpResult= (TextView)getActivity().findViewById(R.id.dpResult); 
     dpResult.setText(year+"-"+month+"-"+day); 
    } 
} 

日期選取器的xml編碼是

 <TextView 
     android:id="@+id/dpResult" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:hint="yyyy-mm-dd" /> 

現在我可以看到卡上的日期選擇器。謝謝

相關問題