2016-08-14 4 views
0

私は多くのチュートリアルをウェブサイトで見ていますが、Stringのデータは、String [] data = {"value"、 "value2"、 "value3"}のようにJavaのStringデータを定義していますが、 。推測私のアプリでは、私は他の言語を使用することになりすぎて私はXMLで定義する必要がないどんなに私はコードの下に使用してそれらを呼び出す:。カスタムRecycler Viewに文字列配列を表示できません。

String[] eArray=getActivity().getResources().getStringArray(R.array.english_names); 

onCreateView

のようにそれらを呼び出します
names.add(new Name(eArray)); 

ただし、マウスを動かすとeArray上のName(java.lang.String)のようなエラーを(java.lang.String [])に適用できない

と私は配列に他の値を渡す必要があることを知っていますが、どのようにする必要がありますか?私はエラー行を変更し、他のものや他のものを表示し続けます。私は多くのツイートサイトをグーグルではあるが、それらのすべてが実用的に文字列を定義している。

私はそれ


cardview.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/cardview" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
app:cardCornerRadius="8dp" 
app:cardUseCompatPadding="true" 
app:cardBackgroundColor="@android:color/transparent" 
android:elevation="0dp"> 

<TextView 
    android:id="@+id/textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="25sp" 
    android:paddingLeft="10dp" 
    android:textColor="#4928ef" 
    android:textStyle="italic"/> 
</android.support.v7.widget.CardView> 

recyclerview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/linearlayout" 
android:background="@drawable/big_img_boy_wp"> 
<android.support.v7.widget.RecyclerView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/rv"> 
</android.support.v7.widget.RecyclerView> 

</LinearLayout> 

cardview.java

public class cardView extends Fragment { 
TextView textView; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.card_view,container,false); 
    textView= (TextView) view.findViewById(R.id.textView); 
    // Typeface typeface=Typeface.createFromAsset(getActivity().getAssets(),"fonts/Cavorting.otf"); 
    // textView.setTypeface(typeface); 
    return view; 

} 
} 
のコードで以下に、カスタムrecyclerviewを作りました

Name.java

public class Name { 
String textView; 
Name(String textView){ 
    this.textView=textView; 
} 
} 

recycler.java

public class Recycler extends Fragment { 
private List<Name> names; 
RecyclerView rv; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.recyclerview,container,false); 
    rv= (RecyclerView) view.findViewById(R.id.rv); 
    String[] eArray=getActivity().getResources().getStringArray(R.array.english_names); 
    LinearLayoutManager llm=new LinearLayoutManager(getActivity()); 
    rv.setLayoutManager(llm); 
    rv.setHasFixedSize(true); 
    initializeData(); 
    initializeAdapter(); 
    return view; 
} 
private void initializeAdapter() { 
rvadapter adapter=new rvadapter(names); 
    rv.setAdapter(adapter); 
} 

public void initializeData() { 
    names=new ArrayList<>(); 
    names.add(new Name("Anish")); 
    names.add(new Name(eArray)); 
} 

} 

rvadapter.java

public class rvadapter extends RecyclerView.Adapter<rvadapter.NameViewHolder> { 
public static class NameViewHolder extends RecyclerView.ViewHolder{ 
    CardView cv; 
    TextView textView; 

    public NameViewHolder(View itemView) { 
     super(itemView); 
     cv= (CardView) itemView.findViewById(R.id.cardview); 
     textView= (TextView) itemView.findViewById(R.id.textView); 

    } 
} 
List<Name> names; 
public rvadapter(List<Name> names) { 
    this.names=names; 


} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 
} 

@Override 
public NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view,parent,false); 
    NameViewHolder nvh=new NameViewHolder(v); 
    return nvh; 
} 

@Override 
public void onBindViewHolder(NameViewHolder holder, int position) { 
    holder.textView.setText(names.get(position).textView); 

} 
@Override 
public int getItemCount() { 
    return names.size(); 
} 
} 

もまた、そのフォントを私はコメント入れて私のcardview.javaをご覧ください変更されません。私はフォントを資産の中に入れ、次にフォントフォルダーを入れます。これはstackoverflowの私の第二の質問ですが、私の最初の質問は正しく答えられていなかったので、それを見てくださいできる場合はClick here to to look by another problem too.おかげでアドバンテージ!

答えて

0
 for (int i = 0; i < eArray.length; i++) { 
      names.add(new Name(eArray[i])); 
     } 
+0

ありがとうございました! :)私はまた、まだ解決されていない私の別の質問を見るだけでなく、フォントを変更することはできませんを見てください。 – Queendevelopers

関連する問題