我想制作一个"照片细节"活动或片段,我在其上方和下方显示照片aViewpPager,显示相关照片的评论和喜欢(2个标签).为了使屏幕'Scrollable'所以我可以向上/向下滚动评论和喜欢并向左/向右滑动我决定使用2行的RecyclerView:
第1行:照片(ImageView).
第2行:SlidingTabLayout + ViewPager + FragmentPagerAdapter.
代码编译并运行,显示图像和slidingTabLayout,但不显示ViewPager.
所以我的两个主要问题是:
1-我的实施有什么问题.
2 - 对于我想要达到的目标,是否有替代或更好的解决方案?
注意:我不想使用带有header的listView.我想使用RecyclerView,因为在网络的顶部/底部添加元素更容易.
PhotoDetailsActivity.java
public class MainActivity extends ActionBarActivity {
RecyclerView recyclerViewPhotoDetails;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.recyclerViewPhotoDetails = (RecyclerView) this.findViewById(R.id.recycler_view_photo_details);
this.recyclerViewPhotoDetails.setLayoutManager(new LinearLayoutManager(this));
this.recyclerViewPhotoDetails.setAdapter(new PhotoDetailsRecyclerAdapter(this.getSupportFragmentManager()));
}
}
Run Code Online (Sandbox Code Playgroud)
PhotosDetailsRecyclerAdapter.java
public class PhotoDetailsRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int ROW_IMAGE = 0;
private static final int ROW_LIKES_AND_COMMENTS = 1;
private static final int TOTAL_ROWS = 2;
private FragmentManager fragmentManager;
public PhotoDetailsRecyclerAdapter(FragmentManager fragmentManager) {
this.fragmentManager = fragmentManager; …Run Code Online (Sandbox Code Playgroud) 我尝试了以下代码:
int x, y;
x = y = int.MaxValue;
int result = x + y;
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,结果将包含-2(我知道为什么).
但是当这样做时:
const int x = int.MaxValue;
const int y = int.MaxValue;
int result = x + y;
Run Code Online (Sandbox Code Playgroud)
由于溢出问题,这不会编译.为什么?
我有以下代码:
class Calculator
{
public int Sum(int x, int y)
{
return x + y;
}
public int Sum(out int x, out int y)
{
x = y = 10;
return x + y;
}
}
class Program
{
static void Main(string[] args)
{
int x = 10, y = 20;
Calculator calculator = new Calculator();
Console.WriteLine ( calculator.Sum ( x , y ) );
Console.WriteLine ( calculator.Sum ( out x , out y ) );
}
}
Run Code Online (Sandbox Code Playgroud)
尽管方法签名仅与out …
我有以下代码:
interface ICalculator
{
int Sum ( int x, int y);
}
abstract class AbsCalculator
{
public abstract int Sum(int x, int y);
}
class Calculator : AbsCalculator, ICalculator
{
public override int Sum(int x, int y)
{
Console.WriteLine ( "From overriden method" );
return x + y;
}
}
Run Code Online (Sandbox Code Playgroud)
以下语句工作正常,程序编译,尽管我没有实现接口:
Calculator calculator = new Calculator();
Console.WriteLine ( calculator.Sum(10, 20) );
Run Code Online (Sandbox Code Playgroud)
所以我的第一个问题是:它为什么有用?
然后,我将以下接口实现添加到Calculator类:
int ICalculator.Sum(int x, int y)
{
Console.WriteLine("From implemented method");
return x + y;
}
Run Code Online (Sandbox Code Playgroud)
再次尝试以下声明时:
Calculator calculator …Run Code Online (Sandbox Code Playgroud) 为什么不可能执行以下操作:
Func<int, int, int> sum = delegate(int x, int y = 20) { return x + y; };
Action<string, DateTime> print =
delegate(string message, DateTime datetime = DateTime.Now)
{
Console.WriteLine(message);
};
sum(x: 20, y: 40);
print(datetime: DateTime.Now, message: "Hello");
Run Code Online (Sandbox Code Playgroud)
只有命名参数的情况:
Func<int, int, int> sum = delegate(int x, int y) { return x + y; };
Action<string, DateTime> print =
delegate(string message, DateTime datetime)
{
Console.WriteLine("{0} {1}", message, datetime);
};
Console.WriteLine(sum(y: 20, x: 40));
print(datetime: DateTime.Now, message: "Hello");
Run Code Online (Sandbox Code Playgroud)
只有可选参数的情况:
Func<int, int, …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
struct Person
{
public readonly int x;
public Person( int x )
{
this.x = x;
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person();
Console.Write(p.x);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码运行良好。为什么?覆盖默认构造函数没有应用于 structs 吗?使用参数化构造函数是否覆盖默认构造函数?
我正在尝试从Type枚举变量中获取所有枚举值:
[Flags]
enum Type
{
XML = 1,
HTML = 2,
JSON = 4,
CVS = 8
}
static void Main(string[] args)
{
Type type = Type.JSON | Type.XML;
List<Type> types = new List<Type>();
foreach (string elem in type.ToString().Split(',') )
types.Add( (Type)Enum.Parse( typeof(Type), elem.Trim() ) );
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
C#类是否从基类继承自定义运算符?我正在尝试以下代码:
class Person
{
public int Age;
public static Person operator ++(Person p)
{
p.Age++;
return p;
}
}
class Agent : Person { }
static void Main(string[] args)
{
Person p = new Person { Age = 23 };
Console.WriteLine ( "Before increment : {0}" , p.Age );
p++;
Console.WriteLine("After increment : {0}", p.Age);
Agent agent = new Agent { Age = 25 };
Console.WriteLine("Before increment : {0}", agent.Age);
agent++;
Console.WriteLine("After increment : {0}", agent.Age);
}
Run Code Online (Sandbox Code Playgroud)
编译器告诉我,他无法显式地从Person转换为Agent.
我试过了 : …
c#中的结构是否有固定的大小?那就是为什么以下代码:
struct Person
{
Person child;
}
Run Code Online (Sandbox Code Playgroud)
会造成无限循环问题吗?或者因为结构类型包含其正确的值而不是引用?
我没有意识到为什么这段代码有效?
interface ISumCalculator
{
int Calc( int x, int y );
}
interface IProductCalculator
{
int Clac ( int x, int y );
}
class Calculator : ISumCalculator, IProductCalculator
{
public int Calc(int x, int y)
{
throw new NotImplementedException();
}
public int Clac(int x, int y)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)