2016-04-14 36 views
0

我使用了一个可扩展的视图,其中parent是文本视图,而children是edittext视图。我想为不同的编辑文本显示不同的提示。我试图通过编程来完成,但没有成功。这是我的代码。如何以编程方式在editext中显示不同的提示

ContactFragment.java

public class ContactFragment extends Fragment { 
private View mView; 
Context mContext; 
EditText edittext; 
ExpandableListAdapter listAdapter; 
ExpandableListView elv; 
List<String> listDataHeader; 
HashMap<String, List<String>> listDataChild; 


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

} 

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

    mView = inflater.inflate(R.layout.fragment_contact_details, container, false); 
    ExpandableListView elv = (ExpandableListView) mView.findViewById(R.id.list); 
    prepareListData(); 
    listAdapter = new ExpandableListAdapter(mContext, listDataHeader,listDataChild); 
    elv.setAdapter(listAdapter); 
    elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, 
            int groupPosition, long id) { 
      // Toast.makeText(getApplicationContext(), 
      // "Group Clicked " + listDataHeader.get(groupPosition), 
      // Toast.LENGTH_SHORT).show(); 
      return false; 
     } 
    }); 

    // Listview Group expanded listener 
    elv.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 

     @Override 
     public void onGroupExpand(int groupPosition) { 
      Toast.makeText(mContext, 
        listDataHeader.get(groupPosition) + " Expanded", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    // Listview Group collasped listener 
    elv.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { 

     @Override 
     public void onGroupCollapse(int groupPosition) { 
      Toast.makeText(mContext, 
        listDataHeader.get(groupPosition) + " Collapsed", 
        Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    // Listview on child click listener 
    elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
            int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(
        mContext, 
        listDataHeader.get(groupPosition) 
          + " : " 
          + listDataChild.get(
          listDataHeader.get(groupPosition)).get(
          childPosition), Toast.LENGTH_SHORT) 
        .show(); 
      return false; 
     } 
    }); 

return mView; 
} 

/* 
* Preparing the list data 
*/ 
private void prepareListData() { 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add("Contact Details"); 

    // Adding child data 
    List<String> basic = new ArrayList<String>(); 
    basic.add(" "); 
    basic.add(" "); 
    basic.add(" "); 
    basic.add(" "); 
    basic.add(" "); 

    listDataChild.put(listDataHeader.get(0), basic); // Header, Child data 
} 
} 

ExpandableListAdapter.java

public class ExpandableListAdapter extends BaseExpandableListAdapter implements TextWatcher{ 
private Context _context; 
private List<String> _listDataHeader; // header titles 
// child data in format of header title, child title 
private HashMap<String, List<String>> _listDataChild; 
private ArrayList<EditText> editTextList = new ArrayList<EditText>(); 
int i=1; 
String name,purpose; 

public ExpandableListAdapter(Context context, List<String> listDataHeader, 
          HashMap<String, List<String>> listChildData) { 
    this._context = context; 
    this._listDataHeader = listDataHeader; 
    this._listDataChild = listChildData; 
} 



@Override 
public Object getChild(int groupPosition, int childPosititon) { 
    return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
      .get(childPosititon); 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) { 
    return childPosition; 
} 

@Override 
public View getChildView(int groupPosition, final int childPosition, 
         boolean isLastChild, View convertView, ViewGroup parent) { 

    final String childText = (String) getChild(groupPosition, childPosition); 


    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) this._context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.fragment_contact_details_child, null); 
    } 


    EditText editetext = (EditText) convertView .findViewById(R.id.item); 
    while(i<6) 
    { 
     switch (i) 
     { 
      case 1:editetext.setHint("Contact Person"); 
       break; 
      case 2:editetext.setHint("Contact Person Photo"); 
       break; 
      case 3:editetext.setHint("Designation/Job"); 
       break; 
      case 4:editetext.setHint("CEO Name"); 
       break; 
      case 5:editetext.setHint("Company Name"); 
       break; 
     } 
     i++; 
    } 

    editetext.addTextChangedListener(this); 
    editTextList.add(editetext); 

    return convertView; 
} 

@Override 
public int getChildrenCount(int groupPosition) { 
    return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
      .size(); 
} 

@Override 
public Object getGroup(int groupPosition) { 
    return this._listDataHeader.get(groupPosition); 
} 

@Override 
public int getGroupCount() { 
    return this._listDataHeader.size(); 
} 

@Override 
public long getGroupId(int groupPosition) { 
    return groupPosition; 
} 

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, 
         View convertView, ViewGroup parent) { 
    String headerTitle = (String) getGroup(groupPosition); 
    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) this._context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.fragment_contact_details_parent, null); 
    } 

    TextView lblListHeader = (TextView) convertView 
      .findViewById(R.id.textViewParent); 
    lblListHeader.setTypeface(null, Typeface.BOLD); 
    lblListHeader.setText(headerTitle); 

    return convertView; 
} 

@Override 
public boolean hasStableIds() { 
    return false; 
} 

@Override 
public boolean isChildSelectable(int groupPosition, int childPosition) { 
    return true; 
} 

@Override 
public void beforeTextChanged(CharSequence s, int start, int count, 
           int after) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    // TODO Auto-generated method stub 
    name=editTextList.get(0).getText().toString(); 
    purpose=editTextList.get(1).getText().toString(); 
} 

@Override 
public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 


    System.out.println("Name is"+name); 
    System.out.println("purpose is"+purpose); 

} 
} 
+0

首先,请张贴只有相关的代码片段,而不是整个项目代码。其次,“没有成功”是什么意思? EditText有setHint()方法,如果它不适合你 - 那么解释究竟出了什么问题。 – Egor

+0

确定我会记住这一点。是的,我尝试使用你可以在我的代码中看到。使用该结果完全不显示提示 – Neha

+0

while和嵌套switch语句的用途是什么? – Pooya

回答

0

在您的ExpandableListAdapter类下getChildView它看起来像你告诉通过所有的提示的应用循环,它完成的“公司名称”

也许改变

while(i<6) 
{ 
    switch (i) 
    { 
     case 1:editetext.setHint("Contact Person"); 
      break; 
     case 2:editetext.setHint("Contact Person Photo"); 
      break; 
     case 3:editetext.setHint("Designation/Job"); 
      break; 
     case 4:editetext.setHint("CEO Name"); 
      break; 
     case 5:editetext.setHint("Company Name"); 
      break; 
    } 
    i++; 
} 

switch (childPosition) 
{ 
    case 1:editetext.setHint("Contact Person"); 
     break; 
    case 2:editetext.setHint("Contact Person Photo"); 
     break; 
    case 3:editetext.setHint("Designation/Job"); 
     break; 
    case 4:editetext.setHint("CEO Name"); 
     break; 
    case 5:editetext.setHint("Company Name"); 
     break; 
} 
+0

即使这不工作。它根本不显示任何提示 – Neha

+0

对不起,它只在那里,但它不可见。万分感谢 :) – Neha

0

实际我有更好的解决办法,为什么不ü只需使用XML代码把提示您编辑text.It会容易ü并且它不是编程式编写代码的教科书。希望得到它

+1

正如我所说我使用expandiblelist视图和编程方式我添加5 edittext,所以我想要为他们显示5个不同的提示 – Neha

相关问题