2016-08-19 14 views
1

まず私の意図を説明しましょう。私はいくつかの民俗音楽と歌詞を持つXML DBを持っています。私の家族や友人のために私はA-Z順に曲が一覧表示されますアンドロイドアプリを開発したいと(私たちはすべて同じ言葉を歌うことができるように)曲のタイトルにテキストをタッチ/クリックした後に/歌詞が表示されます。私は、JavaとAndroidの開発に精通していないですAndroidの歌詞XMLデータベースの歌詞アプリ

は、それにもかかわらず、私が最初にActivityのボタン「の表示すべての曲」があるアプリケーションを作成するために管理し、ListViewリストをそれに曲を別のActivityを押した後(XMLPullHandlerを使用してパーサー)。 (国別文字で始まるアイテムが最後にプッシュされているので、100%ではないが)Collections.sort()を注文するため世話をします。

Screenshot of current functionality

しかし、今、私は歌テキストの表示を続行するかどうかは不確かだ:スクリーンショットをしてくださいを参照してください。私の考え:

  1. これを実現するには、アイテムをクリックした後、新しいSongActivityが表示され、歌詞が表示されます。しかし、その後、私は作成する必要があります。 100の意図と活動、あるいは私はただ1つでそれをすることができますか?後のケースでは、どのテキストがクリックされた曲に属するのかをアプリはどのように知るのだろうか?
  2. 曲のタイトルと一緒に歌の歌詞のテキストをロードし、ListViewでそれを示しているが、属性invisible(HTMLで、それは明らかですが、Javaで - 私はわからない...)とする
xmlファイル内の曲の

例:

<songs> 
    <song> 
     <id>1</id> 
     <title>Zvalila sa skala</title> 
     <lyrics>1. [:Zvalila sa skala z vŕšku do Dunaja,:] 
      [:prenes ma, má milá, prenes ma, má milá, veď je voda malá.:] 

      2. [:Ja bych ťa preniesla, hoc by bola väčšia,:] 
      [:ale že som ti nie, ale že som ti nie, tvoja najmilejšia.:] 

      3. [:Keby ja vedela, kde môj milý býva,:] 
      [:zaletela by som, zaletela by som, na jeho biely dom.:] 
     </lyrics> 
     <type>Valčík</type> 
    </song> ... 

は、誰かが私にこの中に手や指導をお願いしてもらえますか?私は最も感謝しています。

On the picture is the actual status with visible values of variables

答えて

0

項目をクリックした後、新しい歌の活動が 表示され、歌詞が表示されますことを、達成するために。しかし、その後、私は作成する必要があります。 100 インテントとアクティビティ、または1つだけでもいいですか?後で 場合 - どのようにこのアプリは、テキストがクリックされた曲に属している知っているのだろうか?

ありませんあなたは100人の意図や活動を記述する必要はありません。より一般化されて便利な1つだけを使用できます。

「見えない」が、属性を持つ、一緒に歌のタイトルと歌詞のテキストをロードし、それをリストビューで を表示するには(HTMLでそれが 明らかますが、Javaである - 私はわかりません。.. 。)

あなたの質問はあまり明確ではありませんが、私は歌のタイトルとテキストをセカンダリテキストとして表示する必要があると思います。あなたはinvisible属性を使用しようとしている私に二次テキストを隠す感を与え、リスト項目をクリックした後は、二次テキストが見えるように - それはということです?

私が正しくあなたを得た場合、あなたはあなたのRecyclerViewのために使用しているアダプタを変更する必要があります。アダプタをカスタマイズする必要があり、リストの各要素をバインドするときに、選択された項目を追跡することで、セカンダリテキストを表示/非表示にする必要があります。

RecyclerViewを使用して、リスト内の曲のリストを表示することをお勧めします。カスタムアダプタを使用してRecyclerViewを実装するには、インターネット経由で豊富なドキュメントが用意されています。ここで私は一例を付けます。

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

    // Define the ViewHolder for list item 
    public class NormalViewHolder extends ViewHolder { 
     public NormalViewHolder(View itemView) { 
      super(itemView); 

      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // Do whatever you want on clicking the list items 
       } 
      }); 
     } 
    } 

    // And now in onCreateViewHolder you have to pass the correct view 
    // while populating the list item. 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View v; 

     v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_normal, parent, false); 

     NormalViewHolder vh = new NormalViewHolder(v); 

     return vh; 
    } 

    // Now bind the viewholders in onBindViewHolder 
    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

     try { 
      if (holder instanceof NormalViewHolder) { 
       NormalViewHolder vh = (NormalViewHolder) holder; 

       vh.bindView(position); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public int getItemCount() { 
     if (data == null) { 
      return 0; 
     } 

     // data is the ArrayList of items you want to show in your list 
     return data.size(); 
    } 

    // Now define getItemViewType of your own. 

    @Override 
    public int getItemViewType(int position) { 
     return super.getItemViewType(position); 
    } 

    // Now set the default ViewHolder for NormalViewHolder 
    public class ViewHolder extends RecyclerView.ViewHolder { 
     // Define elements of a row here 
     public ViewHolder(View itemView) { 
      super(itemView); 
      // Find view by ID and initialize here 
     } 

     public void bindView(int position) { 
      // bindView() method to implement actions 
     } 
    } 
} 
+0

ご意見ありがとうございますReaz、私はそれを試し、私はそれを動作させることができるかどうかを確認します。 – sujanko

+0

Reazさん、こんにちは、私は最初の選択肢を決めました。とにかく、クラスにOnItemClickListenerを追加したので、どのアイテムがクリックされたのか分かりました。これは正常に動作します。私のルーキーのPOVからは、次のように思えます。データ(曲名)とpiesneという配列のリストビューがあります。このリストにはすべての情報(特にtext_piesneも含まれています)が含まれています。その上に私はクリックされた行(曲のタイトル)を知っている。行をクリックすると、新しいビューを開き、変数text_piesneのテキストを新しいアクティビティに渡すことは可能ですか?もしそうなら、どうすれば私にアクセスできますか? piesne [5] .text_piesne?ありがとうございました – sujanko

+0

私は 'Activity'の間でどのようにデータを渡すことができるかについて既に言及していますので、あなたの要件を完全に理解できませんでした。とにかく、問題をもっと説明する必要がある場合は、StackOverflowに別の質問を書いて、ここに質問へのリンクを付けて、通知を受けることができます。私はあまりにもその質問を見てみましょう。ありがとう。 –

関連する問題